피쳐를 F-regression
레이블과 개별적으로 상관시키고 값을 관찰하는 것과 동일한 피쳐를 사용하여 피쳐를 비교 합니까?
나는 종종 동료 F regression
들이 다음의 머신 러닝 파이프 라인에서 기능 선택을 위해 사용하는 것을 보았습니다 sklearn
.
sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`
일부는 말해주십시오-왜 레이블 / 종속 변수와 상관 관계가있는 것과 동일한 결과를 제공합니까?
F_regression
기능 선택에서 사용하는 이점이 명확하지 않습니다 .
여기에 내 코드입니다 : 내가 사용하고 있습니다 mtcars
에서 데이터 세트를 R
:
import pandas as pd
import numpy as np
from sklearn import feature_selection
from sklearn.linear_model import LinearRegression
#....load mtcars dataset into a pandas dataframe called "df", not shown here for conciseness
# only using these numerical columns as features ['mpg', 'disp', 'drat', 'wt']
# using this column as the label: ['qsec']
model = feature_selection.SelectKBest(score_func=feature_selection.f_regression,\
k=4)
results = model.fit(df[columns], df['qsec'])
print results.scores_
print results.pvalues_
# Using just correlation coefficient:
columns = ['mpg', 'disp', 'drat', 'wt']
for col in columns:
lm = LinearRegression(fit_intercept=True)
lm.fit(df[[col]], df['qsec'])
print lm.score(df[[col]], df['qsec'])
의심되는대로 기능의 순위는 정확히 동일합니다.
scores using f_regression:
[ 6.376702 6.95008354 0.25164249 0.94460378]
scores using coefficient of determination:
0.175296320261
0.18809385182
0.00831830818303
0.0305256382746
보시다시피 두 번째 기능은 가장 높은 순위가 매겨지고 첫 번째 기능은 두 번째이며 네 번째 기능은 세 번째이며 세 번째 기능은 두 경우 모두 마지막입니다.
(가) 경우 지금까지 거기에 F_regression
다른 결과를 줄 것이다, 또는 어떤 방법으로 다른 기능을 순위 것은?
편집 : 요약하면,이 두 기능 순위가 다른 결과를 낳는 지 알고 싶습니다.
1) 결과를 개별적으로 회귀 할 때 F 통계로 기능 순위를 매기고 (이것은 sklearn 이하는 것입니다),
2) 결과와 함께 다시 개별적으로 회귀 할 때 R- 제곱 값으로 피쳐 순위를 매 깁니다.
sklearn
F- 회귀라고합니다. 실제로 테스트이기 때문에 약간 오해의 소지가 있습니다. scikit-learn.org/stable/modules/generated/…