网站建设公司华网天下官网,wordpress页面布置,加强人社局网站建设,中文域名到期对网站的影响各位同学好#xff0c;今天我和大家分享一下python机器学习中的特征选择和数据降维。内容有#xff1a; #xff08;1#xff09;过滤选择#xff1b;#xff08;2#xff09;数据降维PCA#xff1b;#xff08;3#xff09;sklearn实现 那我们开始吧。 一个数据集中… 各位同学好今天我和大家分享一下python机器学习中的特征选择和数据降维。内容有 1过滤选择2数据降维PCA3sklearn实现 那我们开始吧。 一个数据集中可能会有以下问题 1冗余部分特征的相关度高由于A与B之间有某种计算公式使它们相关联A特征的变化会导致B特征的变化容易消耗计算性能只需要存在一个特征就可以了。 2噪声部分特征对预测结果有负影响需要剔除一些与预测对象不相关的特征。 理解特征选择 现在有一个数据集这个数据集中有100个特征我们只需要其中的几十项这时我们需要对这个数据集进行选择。 理解数据降维 现在有一个数据集数据集中有100列特征也叫做有100个维度通过降维将数据将到几十维。降维时一般会改变原维度所代表的意义。例如现在有A、B两个维度给它降到一维称之为C而C维度代表的意义是同时代表A、B维度的新维度。 1. 特征选择 特征选择是单纯地从提取到的所有特征中选择部分特征作为训练集特征特征在选择前和选择后可以改变值也可以不改变值。但是选择后的特征维数肯定比选择前小毕竟我们只选择了其中的一部分特征。 特征选择分为三种方式 1Filter过滤式 根据方差、阈值选择 2Embedded嵌入式 正则化、决策树 3Wrapper包裹式 不常用 2. 过滤选择 过滤式的特征选择是根据方差选择它会删除所有低方差的特征默认会删除所有方差为0的数据。可以使用sklearn中的 VarianceThreshold(threshold0) 方差、阈值来实现过滤。若该列的方差小于我指定的阈值就会删除该特征列。 方差的大小可以体现数据的离散程度。方差越小说明数据越集中这个数据对整个结果的影响并不大所以优先删除方差等于0或接近0的特征。 比如当方差等于0时表示该特征列上所有的值都是一样的一列数据都是一样的对预测结果毫无关系这时就可以把这一列删除。如果方差较大该特征列的离散程度也比较大对结果会有比较大的影响。 在sklearn中实现导入方法 from sklearn.feature_selection import VarianceThreshold 方差、阈值过滤方法 VarianceThreshold() 参数设置 threshold 阈值默认等于0方差小于该阈值时删除该特征列。 # 特征选择
# 自定义数据第0列和3列的值都是一样的
data [[0,2,0,3],[0,1,4,3],[0,1,1,3]]
# 导入标准化方法查看每一列的方差
from sklearn.preprocessing import StandardScaler
scaler StandardScaler()
scaler.fit_transform(data)
# 查看方差
values scaler.var_# 导入过滤选择方法
from sklearn.feature_selection import VarianceThreshold
# 接收过滤选择方法
var VarianceThreshold()
# 将数据传入方差、阈值过滤方法将方差为0的特征删除
result var.fit_transform(data)首先使用标准化方法查看每一项特征值的方差 scaler.var_ 便于对数据的每个特征值的方差有了解再使用过滤选择方法默认删除方差为0的特征列。 3. PCA主成分分析
3.1 方法介绍
主成分分析是一种统计方法是数据降维中的一种通过正交变换将一组可能存在相关性的变量转换为一组线形不相关的变量转换后的这组变量叫主成分。
在用主成分分析方法研究多变量问题时变量个数太多会增加课题的复杂性。人们希望变量的个数减少而得到的信息较多。在很多情形下变量之间有一定的相关关系。当两个变量之间有一定的相关关系时可以解释为这两个变量反映此课题的信息有一定的重叠。
主成分分析是对原先提出的所有变量将重复的变量关系紧密的变量删去多余建立尽可能少的新变量使得这些新变量是两两不相关的而且这些新变量在反映课题的信息反面尽可能保持原有的信息。 3.2 主成分分析求解步骤
1获取方差最大的正交变换 上图中蓝色坐标轴是原来数据的坐标轴坐标上有一个点(2,2)经过变换后得到红色坐标轴这个点的位置没有发生改变但是点的坐标变化了这样就可以将我们的数据变成另外一个值了。
但是这个正交变化该怎么变我们是通过方差来决定的也就是正交变换完后哪个方差最大那么就选哪个。方差越大代表数据越不集中对结果的影响也越大。变换公式如下
pi 代表正交变换参数ai代表每一条数据的特征如果求完后的结果的方差是最大的那么就选择该组正交变化参数p 3.3 生成更多主成分
以上是生成一个主成分新特征的步骤。一般我们会生成多个主成分必须遵循一个条件也就是多个主成分之间不能存在线形相关即特征之间不能通过某种公式来互相转换。用数学公式来表示则为协方差 1降维后的特征之间的协方差为0表示各个特征关系是独立的每个特征都不会随着其他特征变化而有规律的变化。
2如果两个特征之间相关联那么这个两个的协方差较大。新生成一个主成分需要和原来的主成分求一下协方差如果为0证明可行。
3新生成的主成分的每个特征的方差应该尽可能大。 3.4 sklearn 实现 PCA
导入方法 from sklearn.decomposition import PCA
降维方法 PCA() 参数设置
n_components
10-1之间维度的比例再减1。例若原数组有4个特征列指定n_components0.9代表原来有4维现在变成4*0.93.6取整数部分现在有3维再减1维。最终降到2维。
2整型数据。具体维度不能指定超过当前 min{行数,列数} 的维度。 # PCA
# 自定义数据
data [[4,2,76,9],[1,192,1,56],[34,5,20,90]]
# 导入方法
from sklearn.decomposition import PCA
# 构建PCA对象默认降低一个维度
pca PCA(n_components0.9)
# 数据传入PCA方法
result pca.fit_transform(data)