4634|6

553

帖子

3

TA的资源

纯净的硅(初级)

楼主
 

《人工智能实践教程》1、主成分分析(PCA) [复制链接]

一、本书介绍

按照传统惯例,在正式开始之前还是先介绍以下这本书,本书的名称是《人工智能实践教程——从Python入门到机器学习》,作者是邵一川,本书没有对作者进行介绍,网上查到的信息是沈阳大学的副教授。

本书总共有11章,主要分为3大块,第一部分是Python编程;第二部分是机器学习;第三部分是神经网络。

从内容可以看出来,本书层次感非常强,由浅入深,循序渐进。

另外,本书还配有电子档的资料,所有资料都托管在gitee和github。

地址为:

链接已隐藏,如需查看请登录或者注册

链接已隐藏,如需查看请登录或者注册

本书是黑白印刷,导致书中的很多彩色的图表没法看,纸张也不厚实,有点盗版的感觉,感觉有点低成本的意思。

希望在内容上能够更加充实。

二、主成分分析简介

主成分分析(Principal Component Analysis, PCA)是机器学习的经典算法之一,是一种统计方法。

通过正交变换将一组可能存在相关性的变量转换为一组互不相关的变量,转换后的这组变量称为主成分。

PCA的原理是将原始变量转换后重新组合成互不相关的新变量,使少数的新变量就能反映原始变量的信息。

例如,假如F1是第一个线性组合,方差Var(F1)越大,F1反映的信息越多。因此,在所有线性组合中,选取方差最大的线性组合F1作为第一个主成分。

如果第一个主成分不足以反映原来P个指标的信息,再考虑选取F2,即第二个线性组合,为了有效地反映原来P个指标的信息,F1中的信息无须出现在F2中,用数学语言表达为

Cov(F1,F2)=0,F2称为第二个主成分,以此类推,可以选取第三个,第四个,...第k个主成分。

 

PCA的特点:

  • 是一种非监督学习算法;
  • 主要用于数据的降维;
  • 通过降维,可以发现更易于理解的特征;
  • 可用于可视化及数据去噪。

PCA的主要步骤如下:

三、PCA示例

import numpy as np
import matplotlib.pyplot as plt
# 载入数据
data = np.genfromtxt("/home/xp/work/ML_shao1chuan/PCA/data.csv", delimiter=",")
x_data = data[:,0]
y_data = data[:,1]
plt.scatter(x_data,y_data)
plt.show()
print(x_data.shape)

# 数据中心化
def zeroMean(dataMat):
    # 按列求平均,即各个特征的平均
    meanVal = np.mean(dataMat, axis=0) 
    newData = dataMat - meanVal
    return newData, meanVal

newData,meanVal=zeroMean(data)
# np.cov用于求协方差矩阵,参数rowvar=0说明数据一行代表一个样本
covMat = np.cov(newData, rowvar=0)
# 协方差矩阵
print(covMat)
# np.linalg.eig求矩阵的特征值和特征向量
eigVals, eigVects = np.linalg.eig(np.asmatrix(covMat))
# 特征值
print(eigVals)
# 特征向量
print(eigVects)
# 对特征值从小到大排序
eigValIndice = np.argsort(eigVals)
print(eigValIndice)

top = 1
# 最大的top个特征值的下标
n_eigValIndice = eigValIndice[-1:-(top+1):-1]
print(n_eigValIndice)
# 最大的n个特征值对应的特征向量
n_eigVect = eigVects[:,n_eigValIndice]
print(n_eigVect)
# 低维特征空间的数据
lowDDataMat = newData*n_eigVect
print(lowDDataMat)

# 利用低维度数据来重构数据
reconMat = (lowDDataMat*n_eigVect.T) + meanVal
print(reconMat)

# 载入数据
data = np.genfromtxt("/home/xp/work/ML_shao1chuan/PCA/data.csv", delimiter=",")
x_data = data[:,0]
y_data = data[:,1]
plt.scatter(x_data,y_data)

# 重构的数据
x_data = np.array(reconMat)[:,0]
y_data = np.array(reconMat)[:,1]
plt.scatter(x_data,y_data,c='r')
plt.show()

运行结果:

上图红色部分就是利用低维数据重构的数据。

 

最新回复

静待wit不停更新。。。。。。。。。。。。。   详情 回复 发表于 2024-8-7 08:29
点赞 关注(1)

回复
举报

1388

帖子

1

TA的资源

五彩晶圆(初级)

沙发
 

Wit,又开始了新的一本书呀。。。。。。前面的深度学习部分,还没结束吧?

点评

感觉被盯上了,哈哈  详情 回复 发表于 2024-8-5 18:25
 
 

回复

553

帖子

3

TA的资源

纯净的硅(初级)

板凳
 
hellokitty_bean 发表于 2024-8-5 14:42 Wit,又开始了新的一本书呀。。。。。。前面的深度学习部分,还没结束吧?

感觉被盯上了,哈哈

点评

就是感觉停更了得感觉咯,后面的CNN、RNN、LSTM、GAN应该接踵而来才对    详情 回复 发表于 2024-8-6 18:03
哎呀,也不是,感觉兄台的BP写得不错,然后后面应该有继续呀。。。    详情 回复 发表于 2024-8-6 18:02
 
 
 

回复

1388

帖子

1

TA的资源

五彩晶圆(初级)

4
 
xinmeng_wit 发表于 2024-8-5 18:25 感觉被盯上了,哈哈

哎呀,也不是,感觉兄台的BP写得不错,然后后面应该有继续呀。。。

 

 
 
 

回复

1388

帖子

1

TA的资源

五彩晶圆(初级)

5
 
xinmeng_wit 发表于 2024-8-5 18:25 感觉被盯上了,哈哈

就是感觉停更了得感觉咯,后面的CNN、RNN、LSTM、GAN应该接踵而来才对

 

点评

每章都写帖子的话,时间来不及,截止时间快到了,按照原计划,只有一篇目标检测了。 先完成论坛的任务,后面再慢慢补充中间的内容  详情 回复 发表于 2024-8-6 18:55
 
 
 

回复

553

帖子

3

TA的资源

纯净的硅(初级)

6
 
hellokitty_bean 发表于 2024-8-6 18:03 就是感觉停更了得感觉咯,后面的CNN、RNN、LSTM、GAN应该接踵而来才对  

每章都写帖子的话,时间来不及,截止时间快到了,按照原计划,只有一篇目标检测了。

先完成论坛的任务,后面再慢慢补充中间的内容

 
 
 

回复

1388

帖子

1

TA的资源

五彩晶圆(初级)

7
 

静待wit不停更新。。。。。。。。。。。。。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表