700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 降维:特征选择与特征提取

降维:特征选择与特征提取

时间:2024-02-27 12:21:41

相关推荐

降维:特征选择与特征提取

对于降维,我看可以简单理解为减少数据的维度,说白了就是减少变量个数。文末的视频墙裂推荐观看一下。

特征选择:不改变变量的含义,仅仅只是做出筛选,留下对目标影响较大的变量。

Backward Elimination(反向淘汰)Forward Selection(正向选择)Bidirectional Elimination(双向淘汰)Score Comparison(信息量比较)

前面三种机制差不多,反向淘汰其实之前的文章写过实例应用的:反向淘汰

对于正向选择,其实大致就是反向淘汰的逆过程。每个变量在加入模型前进行显著水平与设置的显著阈值进行比较,小于则加入模型,否则不加入。

双向淘汰是反向淘汰结合正向淘汰,因此需要设置两个水平显著值,一个用于反向淘汰判断变量是否该剔除出模型,一个用于正向选择判断变量是否应该加入模型。

信息量比较也写过实例:信息量比较

特征提取:从数据集中的m个变量中提取p个新的变量(p<=m),这p个变量可以很好的解释自变量的差异性(数学上的表现为方差),这一步相当于数据预处理的一步,与因变量无关,因而是个无监督问题。常用到PCA(主成分分析)和KernelPCA(核函数主成分分析)-特殊PCA

PCA工作其实是在寻找最大方差所属的方向------摘自某套教程的解释。

并且PCA中特征缩放是必须的,因为必须保证变量在同一个数量级,否则,数值大的贡献很大,导致我们可能忽略了数值小却很至关重要的特征。

PCA基本工作步骤:

将X记为包含了m个自变量的矩阵,对x进行特征缩放计算x的方差矩阵,记作A计算矩阵A的特征值和特征向量,对特征值进行自大到小排序选择需要解释方差的百分比P,借此进行特征选择p个(这里的特征是我们提取到的,区别于m中的任意一个变量)

这里的p个特征就是我们留下的新特征了

from sklearn.preprocessing import StandardScalerss = StandardScaler()x = ss.fit_transform(x)from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state = 0)from sklearn.decomposition import PCApca = PCA(n_components=None) #当为None时我们只是取p = m,并没有进行取舍。x_train = pca.fit_transform(x_train)x_test = pca.transform(x_test)print('各个变量的解释方差能力:'+str(pca.explained_variance_))#这个步骤会自动得出每个变量的解释方差的能力,并自大到小排序。方便我们进行取舍。

假设我们的P设置为80%,则我们需要用到上述代码的结果的p个变量解释方差达到80%。这里就确定了p的取值。接下来可以在运用一次:

from sklearn.decomposition import PCApca = PCA(n_components=p) #这里的p时上个代码片得出的px_train = pca.fit_transform(x_train)x_test = pca.transform(x_test)

注意重新生成的变量是我们高度概括的结果。区别于原来的变量。

核函数PCA也差不多一样的步骤,不过用到的是别的包:

from sklearn.decomposition import KernelPCA

核函数PCA可以将原本线性不可分的变量,投射到更高维的空间,从而变得线性可分,在将结果投射回低维。关于这个过程,这里有一个youtebe的演示视频,可以很好的帮助理解。

链接:/s/1NQG5QGDZId-IcEUs1HcwfA 密码:a7m0

详细用法可以自行查看官方的文档。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。