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 = "all") หรือไม่ มันกำหนดคุณสมบัติที่ดีที่สุดได้อย่างไรพวกเขาเป็นอิสระจากวิธีที่ต้องการใช้ (ไม่ว่าจะเป็นการถดถอยโลจิสติกการสุ่มป่าไม้หรืออะไรก็ตาม)


เลือกคุณสมบัติตามคะแนนสูงสุด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' ที่ดีที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.