PCA主成分分析

主成分分析:

PCA 即  Principal Components Analy:主成分分析

来自自然界的所有特性信息占,要对所有特性进行同时分析,由于信息量过大 模型无法实现。
使用主成分分析 将最主要的特性信息 分离出来,将分离出来的数据 在做后续的 工作。

PCA 作用:

PCA 用于识别数据中的 重要部分,并将其按照重要程度排序。
当需要处理很大维度的特征值时,利用 PCA 降维 (将主要的 信息分离出来),可以再不损失数据 重要特征的同时 **降低其处理复杂度。**

PCA 实现:

	import cv2 as cv
	import numpy as np
	import sklearn.decomposition as dc      # 包含主成分分析 PCA 的包
	
	def make_data():
	    """
	    手动创建数据,其中 a  b 为 最重要部分,由于 之后的数据都可以 使用 a b 计算出来
	    """
	    a = np.random.normal(size=250)
	    b = np.random.normal(size=250)      # 产生250 个符合正态分布的 随机数
	    c = 2 * a + 3 * b
	    d = 3 * a - 2 * b
	    e = 4 * a + 2 * c
	    f = 2 * d - 3 * b
	    x = np.c_[a,b,c,d,e,f]  # 将每个数组 竖起来 再 拼接起来
	    print(x)
	    return x		
	
	def train_model(x):
	    """
	    得到主成分分析模型
	    """
	    model = dc.PCA()    # 构建一个主成分分析对象
	    model.fit(x)
	    return model
		
	def reduce_model(model, n_components, x):
	    """
	    降维
	    """
	    model.n_components = n_components       # 重新 对model 成分进行重新 设置
	    x = model.fit_transform(x)              # 重新对 model 进行训练,返回值为 主成分
	    return x
		
	def main():
	    x = make_data()
	    # print(x)
	    model = train_model(x)
	    variances = model.explained_variance_   # 得到 特性 重要性数组 并且数组 以排好序
	    print(variances)
	    threshold = 0.8     # 重要性 阈值
	    useful_indices = np.where(variances > threshold)[0]    # 挑选数组中 比 阈值大的部分的 索引
	    print(useful_indices)
	    n_useful = len(useful_indices)        # 所有成分中 主成分 有多少个, 之后用于确定要 降维到多少维度
	    print(n_useful)
	
	    x = reduce_model(model, n_useful, x)
	    print(x)
	    return
		
	if __name__ == '__main__':
	    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值