Чи порівнюють функції, використовуючи F-regression
те саме, що співвідносити функції з міткою окремо і дотримуватися значення ?
Я часто бачив, як мої колеги використовують F regression
для вибору функцій у своєму трубопроводі машинного навчання sklearn
:
sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`
Деякі, будь ласка, скажіть мені - чому це дає ті ж результати, що і лише співвідносивши його зі змінною label / залежно?
Незрозуміло мені перевагу використання 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
давав би різні результати, або в чомусь різнив би риси?
EDIT: Підводячи підсумок, я хотів би знати, чи дають ці два рейтингові функції різні результати:
1) класифікація ознак за їх F-статистикою, коли регресує їх з результатом окремо (це те, що робить sklearn) І,
2) класифікація ознак за значенням R-квадрата при регресуванні їх з результатом, знову ж таки індивідуально.
sklearn
позначає це як F-регресію, що, можливо, трохи вводить в оману, оскільки це насправді тест. scikit-learn.org/stable/modules/generated/…