一、如何进行特性选择?
1、例子引入
import pandas as pd
import numpy as np
data = pd.read_csv('./input/covid.train.csv')
x = data[data.columns[1:94]]
y = data[data.columns[94]]
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
from sklearn import preprocessing
#极差标准化法算法
x = (x - x.min()) / (x.max() - x.min())
bestfeatures = SelectKBest(score_func=f_regression, k=5)
fit = bestfeatures.fit(x,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(x.columns)
#concat two dataframes for better visualization
featureScores = pd.concat([dfcolumns,dfscores],axis=1)
featureScores.columns = ['Specs','Score'] #naming the dataframe columns
print(featureScores.nlargest(15,'Score')) #print 15 best features
在数据里面有很多特征,选出最相关的那些信息,也就是对特征与输出y计算相关度,选出排名靠前的。
2、SelectKBest的详细用法
(1)参数
- score_func :用来计算的特征排名的函数。常见函数如下:
- k:选出排名前几名的特征。
(2)方法:
(a)fit(x,y),在(x,y)上运行记分函数并得到适当的特征。
先实例化一个SelectKBest对象,下面还需要用fit(x:含特征的训练样本,y:用来验证的样本也就是目标)
bestfeatures = SelectKBest(score_func=f_regression, k=5)
fit = bestfeatures.fit(x,y)
(b)、fit_transform(X[, y]),拟合数据,然后转换数据。
(c)get_params([deep]),获得此估计器的参数。
(d)get_support([indices]),获取所选特征的掩码或整数索引。
(e)inverse_transform(X),反向变换操作。
(f)set_params(**params),设置估计器的参数。
(g)transform(X),将X还原为所选特征。