2015-11-28 1 views
4

Я хочу классифицировать текст с помощью sklearn. сначала я использовал сумку слов для обучения данных, особенность пакета слов действительно велика, более 10000 функций, поэтому я уменьшил эту функцию, используя SVD до 100.Как изменить вес элементов при обучении модели с помощью sklearn?

Но здесь я хочу добавить некоторые другие функции например, # слов, # положительных слов, # местоимений и т. д. Дополнительные функции - всего лишь 10 меньших функций, которые по сравнению с 100 мешков слов очень малы

Из этой ситуации я поднимаю 2 вопроса:

  1. Есть ли какая-то функция в sklearn, которая может изменить вес дополнительных функций, чтобы сделать их более важными?
  2. Как проверить, что дополнительная функция важна для классификатора?
+0

Похоже, вы можете просто добавить свои дополнительные функции к вашим характеристикам SVD вдоль 1-й оси, а затем подготовить классификатор к полученной матрице. Существует ряд классификаторов, которые позволяют вам видеть значения признаков, например. GradientBoostingClassifier. Я не думаю, что вы можете изменить значения функций после обучения классификатора; их значение будет отражать их полезность в прогнозировании вашего y. – Ryan

+0

Thx, я имею в виду, если есть некоторые функции для тестового сходства между функциями и классом? как перед обучением классификатора, я получил ранг сходства, который дает мне представление о том, какие функции важны для классификации? –

ответ

1

Несмотря на большой интерес, я не знаю ответа на главный вопрос. Между тем я могу помочь со вторым.

После подгонки модели вы можете получить доступ к функции значения с помощью атрибута model.feature_importances_

Я использую следующую функцию, чтобы нормализовать значение и показать его красивее пути.

import matplotlib.pyplot as plt 
import numpy as np 
import seaborn as sns # (optional) 

def showFeatureImportance(model): 
    #FEATURE IMPORTANCE 
    # Get Feature Importance from the classifier 
    feature_importance = model.feature_importances_ 

    # Normalize The Features 
    feature_importance = 100.0 * (feature_importance/Feature_importance.max()) 
    sorted_idx = np.argsort(feature_importance) 
    pos = np.arange(sorted_idx.shape[0]) + .5 

    #plot relative feature importance 
    plt.figure(figsize=(12, 12)) 
    plt.barh(pos, feature_importance[sorted_idx], align='center', color='#7A68A6') 
    plt.yticks(pos, np.asanyarray(X_cols)[sorted_idx]) 
    plt.xlabel('Relative Importance') 
    plt.title('Feature Importance') 
    plt.show()