python机器学习-特征筛选实现_第1页
python机器学习-特征筛选实现_第2页
python机器学习-特征筛选实现_第3页
python机器学习-特征筛选实现_第4页
python机器学习-特征筛选实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页python机器学习——特征筛选实现python机器学习——特征筛选实现

特征筛选实现

1、特征筛选

(1)含义

特征筛选/选择(FeatureSelection)也称特征⼦集选择(FeatureSubtSelection,FSS),或属性选择(AttributeSelection)。是指从已有的M个特征(Feature)中选择N个特征使得系统的特定指标最优化,是从原始特征中选择出⼀些最有效特征以降低数据集维度的过程,是提⾼学习算法性能的⼀个重要⼿段,也是模式识别中关键的数据预处理步骤。对于⼀个学习算法来说,好的学习样本是训练模型的关键。

(2)⽬的晋灭吴之战

在有限的样本数⽬下,⽤⼤量的特征来设计分类器计算开销太⼤⽽且分类性能差。特征筛选可去掉⼀些冗余特征,提⾼模型的精度,减少计算量,减少特征数量、降维,使模型泛化能⼒更强,减少过拟合。

(3)⼀些区别

①特征筛选与特征提取区别:特征提取(Featureextraction)是指利⽤已有的特征计算出⼀个抽象程度更⾼的特征集,也指计算得到某个特征的算法。

②特征筛选和PCA的区别:对于PCA⽽⾔,我们经常⽆法解释重建之后的特征,⽽特征筛选不存在对特征数值的修改,⽽更加侧重于寻找那些对模型的性能提升较⼤的少量特征。

注意:降维和特征选择都是为了使数据维度降⼩,但实际上两者的区别很⼤,它们的本质是完全不同的:降维本质上是从⼀个维度空间映射到另⼀个维度空间,特征的多少别没有减少,当然在映射的过程中特征的数值也会相应的变化(在这个过程中,特征发⽣了根本性的变化,原始的特征消失了);⽽特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后不改变值,但是选择后的特征维数肯定⽐选择前⼩,因为只选择了其中的⼀部分特征(没有被舍弃的特征没有发⽣任何变化)。

将⾼维空间的样本通过映射或者是变换的⽅式转换到低维空间,达到降维的⽬的,然后通过特征筛选删选掉冗余和不相关的特征来进⼀步降维。

(4)特征选取的原则

①获取尽可能⼩的特征⼦集

②不显著降低分类精度

③不影响类分布

过年吉祥话④特征⼦集应具有稳定适应性强等特点

在筛选特征时需要注意:处理的数据类型、处理的问题规模、问题需要分类的数量、对噪声的容忍能⼒和⽆噪声环境下,产⽣稳定性好、最优特征⼦集的能⼒。

(5)特征获取⽅法

假设原始特征集中有n个特征(也称输⼊变量),那么存在个可能的⾮空特征⼦集。搜索策略就是为了从包含个候选解的搜索空间中寻找最优特征⼦集⽽采取的搜索⽅法。按照特征⼦集的形成⽅式可以分为三种:穷举法(exhaustion)、启发法(heuristic)和随机法(random)。

1)穷举式搜索它可以搜索到每个特征⼦集。缺点是它会带来巨⼤的计算开销,尤其当特征数较⼤时,计算时间很长。

2)序列搜索它避免了简单的穷举式搜索,在搜索过程中依据某种次序不断向当前特征⼦集中添加或剔除特征,从⽽获得优化特征⼦集。⽐较典型的序列搜索算法如:前向后向搜索、等。序列搜索算法较容易实现,计算复杂度相对较⼩,但容易陷⼊局部最优。

3)随机搜索由随机产⽣的某个候选特征⼦集开始,依照⼀定的启发式信息和规则逐步逼近全局最优解。例如:遗传算法(GeneticAlgorithm,GA)、模拟退⽕算法(SimulatedAnnealing,SA)、粒⼦群算法(ParticlSwarmOptimization,PSO)和免疫算法(ImmuneAlgorithm,IA)等。

2−n12−n1

综上穷举法需要遍历特征空间中所有的特征组合,所以⽅法复杂度最⼤,实⽤性不强;启发法通过采⽤期望的⼈⼯机器调度规则,重复迭代产⽣递增的特征⼦集,复杂度略低于穷举法,但是只能获取近似最优解;随即⽅法分为完全随机⽅法和概率随机⽅法两种,对参数设置的依赖性较强。

2、特征筛选具体案例操作

以“泰坦尼克号沉船事故”数据集为例:

#导⼊pandas并且更名为pd。

importpandasaspd

#从互联⽹读取titanic数据。

titanic=pd.read_csv('/wiki/pub/Main/')

#分离数据特征与预测⽬标。

y=titanic['survived']

X=titanic.drop(['s','name','survived'],axis=1)

#对对缺失数据进⾏填充。

X['age'].fillna(X['age'].mean(),inplace=True)

X.fillna('UNKNOWN',inplace=True)

#分割数据,依然采样25%⽤于测试。

del_lectionimporttrain_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)

#类别型特征向量化。

fromsklearn.feature_extractionimportDictVectorizer

vec=DictVectorizer()

X_train=vec.fit_transform(_dict(orient='record'))

X_test=ansform(_dict(orient='record'))

#输出处理后特征向量的维度。

print(len(vec.feature_names_))

10月7号我们可以看到特征向量的维度为474.土人参

#使⽤决策树模型依靠所有特征进⾏预测,并作性能评估。

importDecisionTreeClassifier

dt=DecisionTreeClassifier(criterion='entropy')

dt.fit(X_train,y_train)

dt.score(X_test,y_test)

使⽤所有特征建⽴决策树得到的测试集准确率为0.8267

#从sklearn导⼊特征筛选器。

fromsklearnimportfeature_lection

#筛选前20%的特征,使⽤相同配置的决策树模型进⾏预测,并且评估性能。

fs=feature_lection.SelectPercentile(feature_lection.chi2,percentile=20)

X_train_fs=fs.fit_transform(X_train,y_train)

dt.fit(X_train_fs,y_train)

X_test_fs=fs.transform(X_test)

dt.score(X_test_fs,y_test)

筛选前20%的特征建⽴决策树得到的测试集准确率为0.8298

#通过交叉验证(下⼀节将详细介绍)的⽅法,按照固定间隔的百分⽐筛选特征,并作图展⽰性能随特征筛选⽐例的变化。

厨卫十大名牌排名

del_lectionimportcross_val_score

importnumpyasnp

percentiles=range(1,100,2)

results=[]

foriinpercentiles:

经营计划fs=feature_lection.SelectPercentile(feature_lection.chi2,percentile=i)

X_train_fs=fs.fit_transform(X_train,y_train)

scores=cross_val_score(dt,X_train_fs,y_train,cv=5)

results=np.append(results,an())

print(results)

#找到体现最佳性能的特征筛选的百分⽐。

opt=np.where(results==results.max())[0]

print('Optimalnumberoffeatures%d'%percentiles[int(opt)])

我们可以看到筛选7%的特征能够使得我们的训练集准确率达到最⾼。

importpylabaspl

pl.plot(percentiles,results)

pl.xlabel('percentilesoffeatures')

pl.ylabel('accuracy')

pl.show()

#使⽤最佳筛选后的特征,利⽤相同配置的模型在测试集上进⾏性能评估。

fromsklearnimportfeature_lection

fs=feature_lection.SelectPercentile(feature_lection.chi2,percentile=7)

X_train_fs=fs.fit_transform(X_train,y_train)

dt.fit(X_train_fs,y_train)

X_test_fs=fs.transform(X_test)

dt.score(X_test_fs,y_test)

由上⾯的输出结果可知:

①经过初步的特征处理后,最终的训练与测试数据均有474个维度的特征;

②如果直接使⽤全部474个维度的特征⽤于训练决策树模型进⾏分类预测,那么模型在测试集上的准确性约为81.76%;

③如果筛选前20%维度的特征,在相同的模型配置下进⾏预测,那么在测试集上表现的准确性约为82.37%;

贝瓦唐诗三百首④如果按照固定的间隔采⽤不同百分⽐的特征进⾏训练与测试,通过交叉验证得出的准确性有着很⼤波动,并且最好的模型性能表现在选取前7%的维度的特征的时候;

⑤如果使⽤前7%的维度的特征,那么最终决策树模型可以在该分类预测任务的测试集上表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论