2016-12-30 3 views
-1

Есть ли простой способ просмотра верхних функций каждого класса? Основано на tfidf?Scikit learn-Classification

Я использую KNeighbors classifer, SVC-Linear, MultinomialNB.

Во-вторых, я искал способ просмотра документов, которые не были классифицированы правильно? Я могу просмотреть матрицу путаницы, но я хотел бы видеть конкретные документы, чтобы увидеть, какие функции вызывают ошибочную классификацию.

classifier = SVC(kernel='linear') 
counts = tfidf_vectorizer.fit_transform(data['text'].values).toarray() 
targets = data['class'].values 
classifier.fit(counts, targets) 
counts = tfidf_vectorizer.fit_transform(test['text'].values).toarray() 
predictions = classifier.predict(counts) 

EDIT: Я добавил фрагмент кода, где я только создавая tfidf векторизатор и используя его TRAING классификатор.

+0

Просьба показать код, поэтому мы можем оценить, можно ли предоставить вам ответ, который вы ищете. –

+0

http://stackoverflow.com/help/how-to-ask –

ответ

0

Как и в предыдущих комментариях, более конкретный вопрос приведет к лучшему ответу, но я использую этот пакет все время, поэтому я попробую и помогу.

I. Определение основных функций классов классификации в sklearn действительно зависит от конкретного используемого инструмента. Например, многие методы ансамбля (например, RandomForestClassifier и GradientBoostingClassifer) имеют атрибут .feature_importances_, который будет оценивать каждую функцию в зависимости от ее важности. Напротив, большинство линейных моделей (например, LogisticRegression или RidgeClassifier) имеют штраф за регуляризацию, который наказывает за размер коэффициентов, а это означает, что размеры коэффициентов несколько отражают значимость функции (хотя вам нужно иметь в виду числовые шкалы отдельных функций), к которым можно получить доступ, используя атрибут .coef_ класса модели.

Таким образом, почти все модели sklearn имеют некоторый метод для извлечения признаков, но методы отличаются от модели к модели. К счастью, документация sklearn - FANTASTIC, поэтому я буду читать вашу конкретную модель, чтобы определить ваш лучший подход. Кроме того, обязательно ознакомьтесь с User Guide, связанным с типом проблемы, в дополнение к API-интерфейсу модели.

II. Существует не из коробки метод sklearn для предоставления неправильно классифицированных записей, но если вы используете Pandas DataFrame (который вы должны) для подачи модели, это может быть выполнено в нескольких строках кода, подобных этому.

import pandas as pd 
from sklearn.linear_model import RandomForestClassifier 

df = pd.DataFrame(data) 
x = df[[<list of feature columns>]] 
y = df[<target column>] 

mod = RandomForestClassifier() 
mod.fit(x.values, y.values) 

df['predict'] = mod.predict(x.values) 

incorrect = df[df['predict']!=df[<target column>]] 

Полученный incorrect DataFrame будет содержать только те записи, которые неправильно классифицированные.

Надеюсь, это поможет!

+0

И это действительно помогло. – someone