1

У меня есть задача классификации текста. К настоящему времени я только пометил корпус и извлек некоторые функции в формате bigram (то есть bigram = [('word', 'word'),...,('word', 'word')].Я хотел бы классифицировать некоторый текст, так как я понимаю, что алгоритм SVM может получать только векторы в orther для классификации, поэтому я использую некоторый векторный указатель в scikit следующим образом :Как классифицировать текст с помощью SVM scikit?

bigram = [ [('load', 'superior') 
      ('point', 'medium'), ('color', 'white'), 
      ('the load', 'tower')]] 

fh = FeatureHasher(input_type='string') 

X = fh.transform(((' '.join(x) for x in sample) 
        for sample in bigram)) 
print X 

выход разреженная матрица:

(0, 226456) -1.0 
    (0, 607603) -1.0 
    (0, 668514) 1.0 
    (0, 715910) -1.0 

Как я могу использовать предыдущую разреженную матрицу X классифицировать с SVC, предполагая, что у меня есть 2 классов и поезд и тестовые наборы?.

+0

Каждый документ должен быть разреженным вектором в вашей матрице ... libSVM ожидает, что ваши данные будут разреженными векторами ... так в чем ваш вопрос, вы на самом деле пробовали что-нибудь? –

+0

мой вопрос в том, как я могу использовать разреженную матрицу 'X' для классификации? ... что не ясно? ... – tumbleweed

+0

Редкая матрица = коллекция разреженных векторов. Предпочтительный формат ввода libSVM: сбор разреженных векторов. Просто подумайте, что за пределами поля «все есть матрица». –

ответ

1

Как указывали другие, ваша матрица - это всего лишь список векторов признаков для документов в вашем корпусе. Используйте эти векторы как функции для классификации. Вам просто нужны метки классификации y, а затем вы можете использовать SVC(). Fit (X, y).

Но ... так, как вы просили, это заставляет меня думать, что, возможно, у вас нет классификационных меток. В этом случае, я думаю, вы хотите делать кластеризацию, а не классифицировать. Для этого вы можете использовать один из алгоритмов кластеризации. Я предлагаю запустить sklearn.cluster.MiniBatchKMeans. Затем вы можете вывести верхние 5-10 слов для каждого кластера и сформировать метки из них.

+0

Спасибо, на самом деле у меня есть теги, и я все готов классифицировать их неконтролируемым образом. Теперь я хотел бы классифицировать их с контролируемым aproach. Что может быть лучшим apraach, чтобы представить такие ярлыки классификатору scikit ?. – tumbleweed

+1

«y» в «SVC(). Fit (X, y)» - это метки. Вы просто передаете их классификатору, когда будете подходить. Если у вас нет всех ярлыков, вы, скорее всего, захотите [полууправляемую процедуру обучения] (http://scikit-learn.org/stable/modules/label_propagation.html), то есть распространение меток. – AN6U5

+0

Обратите внимание, что на данный момент LabelSpreading не работает с разреженными данными – MLgeek

 Смежные вопросы

  • Нет связанных вопросов^_^