Як працює SelectKBest?


15

Я переглядаю цей підручник: https://www.dataquest.io/mission/75/improving-your-submission

У розділі 8, знаходячи найкращі функції, відображається наступний код.

import numpy as np
from sklearn.feature_selection import SelectKBest, f_classif

predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked", "FamilySize", "Title", "FamilyId"]

# Perform feature selection
selector = SelectKBest(f_classif, k=5)
selector.fit(titanic[predictors], titanic["Survived"])

# Get the raw p-values for each feature, and transform from p-values into scores
scores = -np.log10(selector.pvalues_)

# Plot the scores.  See how "Pclass", "Sex", "Title", and "Fare" are the best?
plt.bar(range(len(predictors)), scores)
plt.xticks(range(len(predictors)), predictors, rotation='vertical')
plt.show()

Що робить k = 5, оскільки він ніколи не використовується (графік все ще містить всі функції, чи використовую я k = 1 або k = "всі")? Як він визначає найкращі риси, чи не залежать вони від методу, яким хочеться користуватися (будь то логістична регресія, випадкові ліси чи інше)?


Виберіть функції відповідно до k найвищих балів.
Srini

Відповіді:


11

Клас SelectKBest просто оцінює функції за допомогою функції (у цьому випадку f_classif, але це можуть бути й інші), а потім «видаляє всі, крім k найвищі характеристики балів». http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest

Отже, його різновид обгортки, тут важлива функція, яку ви використовуєте для оцінки можливостей.

Про інші методи вибору функцій у sklearn читайте: http://scikit-learn.org/stable/modules/feature_selection.html

І так, f_classif та chi2 не залежать від методу прогнозування, який ви використовуєте.


2

Параметр k важливий, якщо ви використовуєте selector.fit_transform (), який поверне новий масив, де набір функцій був зменшений до кращого 'k'.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.