比较特征是否与将特征分别F-regression
与标签关联并观察值相同?
我经常看到我的同事F regression
在他们的机器学习管道中使用进行特征选择sklearn
:
sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`
有些人请告诉我-为什么它给出与将其与label / depedendent变量相关联时相同的结果?
对我来说,尚不清楚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/...