Я выполняю функцию выбора (по набору данных с 1,930,388 рядами и 88 функциями) с использованием логистической регрессии. Если я тестирую модель на данных с выдержкой, точность будет чуть выше 60%. Ответная переменная равномерно распределена. Мой вопрос: если производительность модели не очень хорошая, могу ли я рассмотреть функции, которые она дает как важные важные функции? Или я должен попытаться повысить точность модели, хотя моя конечная цель заключается не в том, чтобы повысить точность, а только получить важные функции.выбор функции с использованием логистической регрессии
ответ
В GridSearchCV у sklearn есть несколько довольно аккуратных методов, которые дают вам лучший набор функций. Например, рассмотрим следующий код
pipeline = Pipeline([
('vect', TfidfVectorizer(stop_words='english',sublinear_tf=True)),
('clf', LogisticRegression())
])
parameters = {
'vect__max_df': (0.25, 0.5, 0.6, 0.7, 1.0),
'vect__ngram_range': ((1, 1), (1, 2), (2,3), (1,3), (1,4), (1,5)),
'vect__use_idf': (True, False),
'clf__C': (0.1, 1, 10, 20, 30)
}
Здесь массив параметров содержит все различные параметры, которые мне нужно учитывать. обратите внимание на использование, если vect__max_df. max_df - это фактический ключ, который используется моим векторизатором, который является моим селектором. Итак,
'vect__max_df': (0.25, 0.5, 0.6, 0.7, 1.0),
Фактически указывает, что я хочу опробовать вышеуказанные 5 значений для моего векторизатора. Аналогично для остальных. Обратите внимание, как я связал свой векторный указатель с ключом «vect» и моим классификатором с ключом «clf». Вы видите картину? Перемещение по
traindf = pd.read_json('../../data/train.json')
traindf['ingredients_clean_string'] = [' , '.join(z).strip() for z in traindf['ingredients']]
traindf['ingredients_string'] = [' '.join([WordNetLemmatizer().lemmatize(re.sub('[^A-Za-z]', ' ', line)) for line in lists]).strip() for lists in traindf['ingredients']]
X, y = traindf['ingredients_string'], traindf['cuisine'].as_matrix()
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7)
grid_search = GridSearchCV(pipeline, parameters, n_jobs=3, verbose=1, scoring='accuracy')
grid_search.fit(X_train, y_train)
print ('best score: %0.3f' % grid_search.best_score_)
print ('best parameters set:')
bestParameters = grid_search.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):
print ('\t %s: %r' % (param_name, bestParameters[param_name]))
predictions = grid_search.predict(X_test)
print ('Accuracy:', accuracy_score(y_test, predictions))
print ('Confusion Matrix:', confusion_matrix(y_test, predictions))
print ('Classification Report:', classification_report(y_test, predictions))
отмечает, что массив bestParameters даст мне лучший набор параметров из всех вариантов, которые я указал при создании моего трубопровода.
Надеюсь, это поможет.
Edit: Для того, чтобы получить список функций выбранного
так, как только у вас есть свой лучший набор параметров, создавать vectorizers и классификаторов с тех значений параметров
vect = TfidfVectorizer('''use the best parameters here''')
тогда вы в основном тренируют векторизатор еще раз. при этом векторизатор выберет определенные функции из вашего набора тренировок.
traindf = pd.read_json('../../data/train.json')
traindf['ingredients_clean_string'] = [' , '.join(z).strip() for z in traindf['ingredients']]
traindf['ingredients_string'] = [' '.join([WordNetLemmatizer().lemmatize(re.sub('[^A-Za-z]', ' ', line)) for line in lists]).strip() for lists in traindf['ingredients']]
X, y = traindf['ingredients_string'], traindf['cuisine'].as_matrix()
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7)
termDocMatrix = vect.fit_transform(X_train, y_train)
В настоящее время терминDocMatrix имеет все выбранные функции. Кроме того, вы можете использовать векторизатор для получения имен функций. скажем, вы хотите получить 100 лучших функций. и ваша метрика для сравнения хи-квадрат счет
getKbest = SelectKBest(chi2, k = 100)
теперь просто
print(np.asarray(vect.get_feature_names())[getKbest.get_support()])
должна дать вам 100 лучших возможностей. попробуй это.
Спасибо за подробное объяснение GridSearch. Но это не отвечает на мой вопрос. Мой вопрос заключался в том, что если я использую какой-либо алгоритм для цели выделения объектов, должен ли я сосредоточиться на точности модели? Например, sk learn методы выбора объектов (http://scikit-learn.org/stable/modules/feature_selection.html) перечисляют случайные леса, логистическую регрессию и т. Д. В качестве стандартных подходов. Как выбрать один из двух методов выбора функций на основе моделей? выбрать на основе точности? – user2736376
Точность - хорошая мера, но вы также должны посмотреть на другие параметры, такие как кривая ROC, точность, отзыв и f-мерка. в зависимости от проблемы, которую вы пытаетесь решить, один или несколько из этих параметров могут быть важными. поэтому он помогает создавать конвейеры, чтобы вы могли сравнивать разные модели. точность является самой простой.кстати, какую проблему вы пытаетесь решить? Каков ваш прецедент? – AbtPst
также, когда вы говорите: «Конечная цель заключается не в повышении точности, а в получении важных функций», вы действительно хотите получить функции, которые выбирает наиболее подходящая модель? то есть вы хотите узнать «вещи», на которые смотрит лучшая модель? – AbtPst
- 1. Автоматический выбор оптимизации gcc-компилятора с использованием модели логистической регрессии
- 2. логистической регрессии с использованием для петель R
- 3. Перевод логистической функции потери регрессии в Softmax
- 4. логистической регрессии - функция потерь
- 5. Передача функционального вектора функции логистической регрессии sklearn
- 6. Уменьшение переменных логистической регрессии - MATLAB
- 7. логистической регрессии Macro
- 8. Модель онлайн-логистической регрессии
- 9. Heatmap для логистической регрессии
- 10. использования SciKitLearn логистической регрессии
- 11. Векторизация логистической регрессии стоимость
- 12. Диапазон возможностей в логистической регрессии
- 13. Интерпретация и построение логистической регрессии
- 14. Понимание значения коэффициентов логистической регрессии
- 15. Характеристики ранжирования в логистической регрессии
- 16. график границы решения логистической регрессии
- 17. Ошибка в многолинейной логистической регрессии
- 18. Понимание вероятностной интерпретации логистической регрессии
- 19. geom_abline для логистической регрессии (ggplot2)
- 20. Прогнозирование с использованием mboost полиномиальной логистической регрессии в R
- 21. Реализация логистической регрессии в Theano с Climin
- 22. Понимание этой реализации логистической регрессии
- 23. R ошибки логистической регрессии округления?
- 24. PCA снижает производительность логистической регрессии?
- 25. statsmodels проблемы логистической регрессии типа
- 26. Ошибка логистической регрессии в r
- 27. Выбор переменных для нормализации при применении логистической регрессии
- 28. Как рассчитать кривую логистической регрессии?
- 29. Theano логистической регрессии несоответствие размера
- 30. Реализация логистической регрессии в MATLAB
Какой у вас переключатель функций? – AbtPst