Bagaimana cara kerja SelectKBest?

15

Saya melihat tutorial ini: https://www.dataquest.io/mission/75/improving-your-submission

Pada bagian 8, menemukan fitur terbaik, itu menunjukkan kode berikut.

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()

Apa yang k = 5 lakukan, karena tidak pernah digunakan (grafik masih mencantumkan semua fitur, apakah saya menggunakan k = 1 atau k = "semua")? Bagaimana cara menentukan fitur terbaik, apakah mereka terlepas dari metode yang ingin digunakan (apakah regresi logistik, hutan acak, atau apa pun)?

pengguna
sumber
Pilih fitur sesuai dengan skor tertinggi k .
Srini

Jawaban:

11

Kelas SelectKBest hanya menilai fitur menggunakan fungsi (dalam hal ini f_classif tetapi bisa menjadi yang lain) dan kemudian "menghapus semua kecuali fitur penilaian tertinggi k". http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest

Jadi jenis pembungkusnya, yang penting di sini adalah fungsi yang Anda gunakan untuk menilai fitur.

Untuk teknik pemilihan fitur lainnya di sklearn baca: http://scikit-learn.org/stable/modules/feature_selection.html

Dan ya, f_classif dan chi2 tidak tergantung pada metode prediksi yang Anda gunakan.

pgalilea
sumber
2

Parameter k penting jika Anda menggunakan selector.fit_transform (), yang akan mengembalikan array baru di mana set fitur telah direduksi menjadi 'k' terbaik.

Chris Thompson
sumber