首页 > 其他分享 >特征降维&主成分分析

特征降维&主成分分析

时间:2024-06-10 20:31:30浏览次数:20  
标签:10 20 方差 特征 降维 成分 print import

1、特征降维是什么?

降维是指在某些特定的限定条件下,降低随机变量(特征)的个数,得到一组“不相关”主变量过程
相关特征:两个特征之间存在某些关系,例如降雨量和空气湿度是相关特征。

2、特征降维的方法有哪些?

Filter(过滤式)

a)方差选择法:低方差特征过滤(例如判断鸟的种类中,特征是否有爪子属于低方差特征,低方差数据比较集中,过滤)
sklearn.feature_selection.VarianceThreshold(threshold=0.0)
threshold为阈值,默认为0,即删除所有方差为0的特征
Variance.fit_transform(x):x为numpy array格式的数据,返回值为低于threshold的特征删除后的结果

import numpy as np
from sklearn.feature_selection import VarianceThreshold
# 示例数据
X = np.array([
    [0, 2, 0, 3],
    [0, 1, 4, 3],
    [0, 1, 1, 3]
])
# 初始化 VarianceThreshold,默认 threshold=0.0
selector = VarianceThreshold()
# 进行特征选择
X_reduced = selector.fit_transform(X)
print("原始特征矩阵:")
print(X)
print("方差: ", selector.variances_)
print("去除方差为0的特征后的矩阵:")
print(X_reduced)

初始矩阵第一列和第四列元素为0,即方差为0,所以执行后结果如下:
方差过滤法

b)相关系数法:衡量特征与特征之间相关性,相关性很强需要处理。
皮尔逊相关系数计算公式如下:
r = ∑ i = 1 n ( X i − X ‾ ) ( Y i − Y ‾ ) ∑ i = 1 n ( X i − X ‾ ) 2 ∑ i = 1 n ( Y i − Y ‾ ) 2 r=\frac{\sum\limits_{i=1}^n(X_i-\overline{X})(Y_i-\overline{Y})}{\sqrt{\sum\limits_{i=1}^n(X_i-\overline{X})^2}\sqrt{\sum\limits_{i=1}^n(Y_i-\overline{Y})^2}} r=i=1∑n​(Xi​−X)2 ​i=1∑n​(Yi​−Y)2 ​i=1∑n​(Xi​−X)(Yi​−Y)​

通常用皮尔逊相关系数法,相关系数 r r r介入 − 1 -1 −1到 1 1 1之间
当 r r r大于 0 0 0,二者呈正相关, r r r小于 0 0 0,二者呈现负相关, ∣ r ∣ |r| ∣r∣越接近于 1 1 1,相关性越强,一般按以下三级划分
∣ r ∣ < 0.4 |r|<0.4 ∣r∣<0.4为低度相关
0.4 ≤ ∣ r ∣ < 0.7 ∣ 0.4≤|r|<0.7| 0.4≤∣r∣<0.7∣为显著相关
0.7 ≤ ∣ r ∣ < 1 0.7≤|r|<1 0.7≤∣r∣<1为高度线性相关
API:from scipy.stats import pearsonr
pearsonr(x,y),x,y为两个特征,返回相关系数

import numpy as np
from scipy.stats import pearsonr
# 示例数据
# 两个特征的数据
feature1 = np.array([1, 2, 3, 4, 5])
feature2 = np.array([2, 4, 6, 8, 10])
# 计算 Pearson 相关系数
pearson_correlation = pearsonr(feature1, feature2)
print("特征1: ", feature1)
print("特征2: ", feature2)
print("Pearson 相关系数: ", pearson_correlation)

运行结果如下:
在这里插入图片描述
下面用数学方法计算:
feature1的均值为 3 3 3,feature2的均值为6
分子: ( 1 − 3 ) ( 2 − 6 ) + ( 2 − 3 ) ( 4 − 6 ) + ( 3 − 3 ) ( 6 − 6 ) + ( 4 − 3 ) ( 8 − 6 ) + ( 5 − 3 ) ( 10 − 6 ) = 20 (1-3)(2-6)+(2-3)(4-6)+(3-3)(6-6)+(4-3)(8-6)+(5-3)(10-6)=20 (1−3)(2−6)+(2−3)(4−6)+(3−3)(6−6)+(4−3)(8−6)+(5−3)(10−6)=20
∑ i = 1 n ( X i − X ‾ ) 2 = 10 {\sqrt{\sum\limits_{i=1}^n(X_i-\overline{X})^2}}=\sqrt{10} i=1∑n​(Xi​−X)2 ​=10
∑ i = 1 n ( Y i − Y ‾ ) 2 = 40 {\sqrt{\sum\limits_{i=1}^n(Y_i-\overline{Y})^2}}=\sqrt{40} i=1∑n​(Yi​−Y)2 ​=40
则皮尔逊系数为
r = 20 10 40 = 20 20 = 1 r=\frac{20}{\sqrt{10}\sqrt{40}}=\frac{20}{20}=1 r=10 ​40 ​20​=2020​=1
与上述结果一致。
p − v a l u e p-value p−value 是一个统计量,用于检验两个变量之间的相关性是否显著。
如果 p − v a l u e p-value p−value很小(通常小于 0.05 0.05 0.05),则可以拒绝原假设,认为两个变量之间存在显著的线性关系。
如果 p − v a l u e p-value p−value很大,则不能拒绝原假设,认为两个变量之间的线性关系不显著。

Embedded(嵌入式)

a)决策树:信息熵、信息增益
b)正则化:L1,L2
c)深度学习:卷积等

PCA降维

主成分分析 (Principal Component Analysis, PCA) 是一种用于降维的线性算法,旨在通过将数据投影到主成分上来减少数据的维度,同时尽可能保留数据的方差。主成分是原始特征的线性组合,按解释的方差从大到小排序。通过保留前几个主成分,可以在保留大部分信息的前提下显著减少特征的数量。
API:sklearn.decomposition.PCA(n_components=None)
将数据分解成较低维空间
n_components:
①小数:表示保留百分之多少的信息
②整数:减少到多少特征
PCA.fit_transform(x):numpy array格式数据,返回指定维度的array

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# 示例数据:4个特征,10个样本
X = np.array([
    [2.5, 2.4, 2.3, 2.2],
    [0.5, 0.7, 0.8, 0.6],
    [2.2, 2.9, 2.6, 2.4],
    [1.9, 2.2, 2.1, 2.0],
    [3.1, 3.0, 3.2, 3.3],
    [2.3, 2.7, 2.5, 2.6],
    [2, 1.6, 1.8, 1.9],
    [1, 1.1, 1.2, 1.0],
    [1.5, 1.6, 1.7, 1.8],
    [1.1, 0.9, 1.0, 0.8]
])
# 创建PCA对象,并将数据降维到2个主成分
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print("原始数据形状:", X.shape)
print("降维后数据形状:", X_pca.shape)
print("降维后数据:")
print(X_pca)
# 绘制降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.xlabel('主成分1')
plt.ylabel('主成分2')
plt.title('PCA 降维后的数据分布')
plt.show()

运行结果如下:
在这里插入图片描述
在这里插入图片描述

标签:10,20,方差,特征,降维,成分,print,import
From: https://blog.csdn.net/weixin_50164178/article/details/139581057

相关文章

  • kaggle竞赛实战8——其他方案之XGBOOST及NLP特征优化
    之前都用的集成算法,发现差异不大,考虑在特征优化上提升数据质量,用NLP算法优化id列有两种方法,分别是countervector和TF-IDF,前者就是词频,后者由TF(词频)和IDF(反文档词频)两部分组成,具体理论部分可参考推荐算法课程学习笔记2:文本特征提取基础_countervector-CSDN博客这篇文章fromsk......
  • Hvv常见流量特征(通俗易懂好记)
    目录 1.菜刀的流量特征2.蚁剑的流量特征3.哥斯拉流量特征4.冰蝎流量特征1.菜刀的流量特征1.user_agent一般为百度,火狐等爬虫标识2.默认连接密码为caidao,webshell为一句话3.请求体中存在eval,base64等特征关键字,eval用于传递执行的payload,菜刀默认使用的是base64的编......
  • YoloV8改进策略:Neck篇|自研Neck层融合模型|深度特征与浅层特征融合,涨点明显|附结构图(
    摘要本文介绍的独家原创的Neck层特征融合方法,将深度特征和浅层特征相融合,结合自研下采样模块和动态上采样模块,提供了一种高效的Neck层改进方式,不仅为他们提供了一个现成的解决方案,而且能够作为灵感启发,鼓励他们在此基础上进行进一步的探索和创新。即插即用的特性使得这种改......
  • GH3600高温合金化学成分、物理性能概述
    GH3600高温合金概述GH3600高温合金是一种镍基高温合金,具有优异的高温强度和抗氧化性能。其主要成分为镍、铬、钼、钨等,广泛应用于航空航天、燃气轮机、石油化工等领域。在高温环境下,GH3600高温合金展示出卓越的耐久性和稳定性,成为高温应用中不可或缺的材料。GH3600高温合金化......
  • 【跌倒检测】HMM+SVM形状特征跌倒检测 (含准确率)【含Matlab源码 4624期】
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。......
  • JAVA面向对象三大特征之继承
    目录1.继承概述2.继承的格式 3.继承的好处3.1继承的使用时机3.2注意4.继承中变量的访问特点5.总结1.继承概述在继承中我们可以把类分为两种一种是父类一种是子类,子类在继承父类后会获得父类中的属性和方法,在父类中定义过的属性和方法,子类中不需要再写一遍,同时子......
  • 【YOLOv8改进】CPCA(Channel prior convolutional attention)中的通道注意力,增强特征
    YOLO目标检测创新改进与实战案例专栏专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLO基础解析+创新改进+实战案例摘要医学图像通常展示出低对比度和显著的器官形状变化等特征。现有注意......
  • 算法金 | 再见,PCA 主成分分析!
    ​大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣]1.概念:数据降维的数学方法定义主成分分析(PCA)是一种统计方法,通过正交变换将一组可能相关的变量转换为一组线性不相关的变量,这组新的变量称为主成分。大白话,PCA能够......
  • 两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析-文献精读20
    CharacterizationoftwoO-methyltransferasesinvolvedinthebiosynthesisofO-methylatedcatechinsinteaplant两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析茶树三维基因组-文献精读19比较转录组分析揭示了116种山茶属(Camellia)植物的深层系统发......
  • 主成分分析(PCA)介绍
    目录计算过程投影分量计算假设你有一家理发店,已经记录了过去一年中所有顾客的头发长度和发型偏好的数据。现在你想从这些数据中提取一些主要的信息,比如顾客最常选择的发型类型,以及不同发型之间的相关性等。这对于你未来开展有针对性的营销活动很有帮助。具体来说,我们可以将......