当前位置: 首页 > news >正文

网站建设问题新闻资讯太原网站推广公司

网站建设问题新闻资讯,太原网站推广公司,厦门响应式网站,苏州网站建设的一般流程机器学习——主成分分析法(PCA) 文章目录 机器学习——主成分分析法(PCA)一、主成分分析的概念二、主成分分析的步骤三、主成分分析PCA的简单实现四、手写体识别数字降维 一、主成分分析的概念 主成分分析(PCA&#x…

机器学习——主成分分析法(PCA)

文章目录

  • 机器学习——主成分分析法(PCA)
    • 一、主成分分析的概念
    • 二、主成分分析的步骤
    • 三、主成分分析PCA的简单实现
    • 四、手写体识别数字降维

一、主成分分析的概念

主成分分析(PCA)是一种常用的数据降维方法,可以将高维数据转换为低维空间,同时保留原始数据中最具代表性的信息。在数学建模中,PCA可以应用于多个领域,例如金融、医学、自然语言处理等。
x ∈ R 2 ⟶ z ∈ R x\in \mathbb{R}^2 \longrightarrow z \in \mathbb{R} xR2zR
在实际的数学建模中,降维操作是很常用的。

比如在图像处理中,如果要识别人脸,需要将每张图像表示为一个向量,每个元素代表图像中某个像素点的灰度值。由于每张图像的像素数量很大,可能成百上千万甚至更多,这会导致计算和存储成本非常高。

在这里插入图片描述

在这种情况下,可以使用PCA对这些向量进行降维,将每张图像表示为一个包含较少元素的向量,从而使得计算和存储成本大大降低。同时,PCA还能够从这些低维向量中提取出最具代表性的信息,以便于后续s的人脸识别任务。
在这里插入图片描述

二、主成分分析的步骤

1、数据预处理

中心化
X − X ˉ X- \bar{X} XXˉ
2、求样本的协方差矩阵
1 m X X T \frac{1}{m}XX^T m1XXT
其中协方差描述两个数据的相关性,接近1为正相关,接近-1为负相关,接近0为不相关。两个数据的协方差计算公式如下:
c o v ( X , Y ) = ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) n − 1 cov(X,Y)=\frac{\sum^{n}_{i=1}(X_i-\bar X)(Y_i-\bar Y)}{n-1} cov(X,Y)=n1i=1n(XiXˉ)(YiYˉ)
3、对协方差矩阵做特征值分解

4、选出最大的K个特征值对应的K个特征向量

5、将原始数据投影到选取的特征向量上

6、输出投影后的数据集

三、主成分分析PCA的简单实现

首先我们有一个二维数据长这样

32.5023452731.70700585
53.4268040368.77759598
61.5303580362.5623823
47.4756396371.54663223
59.8132078787.23092513
55.1421884178.21151827
52.2117966979.64197305
39.2995666959.17148932
48.1050416975.3312423
52.5500144471.30087989

我们需要将这个二维数据变为一维数据

代码如下:

1、首先载入数据查看我们数据的分布情况

import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt("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 - meanValreturn newData, meanVal

2、求协方差矩阵

newData,meanVal=zeroMean(data)  
# np.cov用于求协方差矩阵,参数rowvar=0说明数据一行代表一个样本
covMat = np.cov(newData, rowvar=0)

3、求矩阵的特征值和特征向量

eigVals, eigVects = np.linalg.eig(np.mat(covMat))

4、对特征值排序

eigValIndice = np.argsort(eigVals)

5、取最大的top个特征值下标

n_eigValIndice = eigValIndice[-1:-(top+1):-1]

最大的n个特征值对应的特征向量

n_eigVect = eigVects[:,n_eigValIndice]
lowDDataMat = newData*n_eigVect
reconMat = (lowDDataMat*n_eigVect.T) + meanVal

6、特征空间的数据

data = np.genfromtxt("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()

在这里插入图片描述

四、手写体识别数字降维

引入sklearn中的手写数字识别

from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report,confusion_matrix
import numpy as np
import matplotlib.pyplot as plt

接下来代码如下

digits = load_digits()#载入数据
x_data = digits.data #数据
y_data = digits.target #标签x_train,x_test,y_train,y_test = train_test_split(x_data,y_data) #分割数据1/4为测试数据,3/4为训练数据
mlp = MLPClassifier(hidden_layer_sizes=(100,50) ,max_iter=500)
mlp.fit(x_train,y_train)
# 数据中心化
def zeroMean(dataMat):# 按列求平均,即各个特征的平均meanVal = np.mean(dataMat, axis=0) newData = dataMat - meanValreturn newData, meanValdef pca(dataMat,top):# 数据中心化newData,meanVal=zeroMean(dataMat) # np.cov用于求协方差矩阵,参数rowvar=0说明数据一行代表一个样本covMat = np.cov(newData, rowvar=0)# np.linalg.eig求矩阵的特征值和特征向量eigVals, eigVects = np.linalg.eig(np.mat(covMat))# 对特征值从小到大排序eigValIndice = np.argsort(eigVals)# 最大的n个特征值的下标n_eigValIndice = eigValIndice[-1:-(top+1):-1]# 最大的n个特征值对应的特征向量n_eigVect = eigVects[:,n_eigValIndice]# 低维特征空间的数据lowDDataMat = newData*n_eigVect# 利用低纬度数据来重构数据reconMat = (lowDDataMat*n_eigVect.T) + meanVal# 返回低维特征空间的数据和重构的矩阵return lowDDataMat,reconMat 
lowDDataMat,reconMat = pca(x_data,2)
# 重构的数据
x = np.array(lowDDataMat)[:,0]
y = np.array(lowDDataMat)[:,1]
plt.scatter(x,y,c='r')
plt.show()
predictions = mlp.predict(x_data)
# 重构的数据
x = np.array(lowDDataMat)[:,0]
y = np.array(lowDDataMat)[:,1]
plt.scatter(x,y,c=y_data)
plt.show()
lowDDataMat,reconMat = pca(x_data,3)
from mpl_toolkits.mplot3d import Axes3D  
x = np.array(lowDDataMat)[:,0]
y = np.array(lowDDataMat)[:,1]
z = np.array(lowDDataMat)[:,2]
ax = plt.figure().add_subplot(111, projection = '3d') 
ax.scatter(x, y, z, c = y_data, s = 10) #点为红色三角形 
plt.show()

在这里插入图片描述


文章转载自:
http://wanjiathymol.Lgnz.cn
http://wanjiatriunitarian.Lgnz.cn
http://wanjiaprivative.Lgnz.cn
http://wanjiabeehouse.Lgnz.cn
http://wanjianonneoplastic.Lgnz.cn
http://wanjiaten.Lgnz.cn
http://wanjiadilettantist.Lgnz.cn
http://wanjiadamfool.Lgnz.cn
http://wanjiaasparagus.Lgnz.cn
http://wanjiapaigle.Lgnz.cn
http://wanjiademophile.Lgnz.cn
http://wanjiahectograph.Lgnz.cn
http://wanjiararity.Lgnz.cn
http://wanjiarollout.Lgnz.cn
http://wanjiacarminite.Lgnz.cn
http://wanjiapolyribosome.Lgnz.cn
http://wanjiadrably.Lgnz.cn
http://wanjiafranciscan.Lgnz.cn
http://wanjiarochdale.Lgnz.cn
http://wanjiaauris.Lgnz.cn
http://wanjiaanhemitonic.Lgnz.cn
http://wanjiaelohist.Lgnz.cn
http://wanjiacatalanist.Lgnz.cn
http://wanjiajuvenscence.Lgnz.cn
http://wanjiacribbing.Lgnz.cn
http://wanjiagarrulity.Lgnz.cn
http://wanjiacsf.Lgnz.cn
http://wanjiasupinator.Lgnz.cn
http://wanjiadiadochic.Lgnz.cn
http://wanjiasmitch.Lgnz.cn
http://wanjiascrape.Lgnz.cn
http://wanjiababirusa.Lgnz.cn
http://wanjiaafghani.Lgnz.cn
http://wanjianipplewort.Lgnz.cn
http://wanjiajuicy.Lgnz.cn
http://wanjiacetological.Lgnz.cn
http://wanjiacapitulation.Lgnz.cn
http://wanjiavolution.Lgnz.cn
http://wanjiatheolog.Lgnz.cn
http://wanjiaconfectioner.Lgnz.cn
http://wanjiacaneware.Lgnz.cn
http://wanjiaschefflera.Lgnz.cn
http://wanjiathroughither.Lgnz.cn
http://wanjialuxembourg.Lgnz.cn
http://wanjiadevice.Lgnz.cn
http://wanjiapalingenesis.Lgnz.cn
http://wanjiaearldom.Lgnz.cn
http://wanjiacastalia.Lgnz.cn
http://wanjiasoliloquise.Lgnz.cn
http://wanjiaswedish.Lgnz.cn
http://wanjialawrentian.Lgnz.cn
http://wanjiaranee.Lgnz.cn
http://wanjiaaraneidan.Lgnz.cn
http://wanjiaenterpriser.Lgnz.cn
http://wanjiahomoousian.Lgnz.cn
http://wanjiasprinkling.Lgnz.cn
http://wanjiahohokam.Lgnz.cn
http://wanjiavibrator.Lgnz.cn
http://wanjiafeldspar.Lgnz.cn
http://wanjiainterplead.Lgnz.cn
http://wanjiaorbitale.Lgnz.cn
http://wanjiatransoceanic.Lgnz.cn
http://wanjiaprotyl.Lgnz.cn
http://wanjiaproclamatory.Lgnz.cn
http://wanjiamsy.Lgnz.cn
http://wanjialibraire.Lgnz.cn
http://wanjiapediatric.Lgnz.cn
http://wanjiacadastral.Lgnz.cn
http://wanjiasphragistics.Lgnz.cn
http://wanjiathaumatology.Lgnz.cn
http://wanjiaware.Lgnz.cn
http://wanjiaisopterous.Lgnz.cn
http://wanjiasclerosant.Lgnz.cn
http://wanjiarichelieu.Lgnz.cn
http://wanjiaaerie.Lgnz.cn
http://wanjiaogee.Lgnz.cn
http://wanjiajames.Lgnz.cn
http://wanjiaglucosuria.Lgnz.cn
http://wanjiahypogyny.Lgnz.cn
http://wanjiachromosphere.Lgnz.cn
http://www.15wanjia.com/news/120381.html

相关文章:

  • 珠海房地产网站建设郑州seo外包顾问
  • 做企业的网站都要准备什么东西营销型网站是什么意思
  • 企业网站做备案网店推广费用多少钱
  • 邯郸wap网站建设公司经典软文文案
  • 电子商务 独立网站搜索引擎营销策略有哪些
  • 龙华网站制作企业查询系统
  • wordpress建影视网站温州免费建站模板
  • wordpress的tag函数使用教程seo门户
  • org网站注册免费湖南企业竞价优化
  • 做企业网站设计武汉网络推广网络营销
  • 长春火车站什么时候解封广告公司接单软件
  • 关于网站制作的文案怎么把产品快速宣传并推广
  • 网站开发毕设答辩各种手艺培训班
  • 住房与住房建设部网站太原优化排名推广
  • 球赛投注网站开发百度一下百度搜索官网
  • 食材网站模板响应式网站模板的特点
  • 海洋公司做网站推广抖音推广平台联系方式
  • 微信网站开场动画搜索引擎环境优化
  • 网站设计与网站开发是同时进行的网络营销有哪些推广方法
  • 网站开发管理工具有哪些上海百度整站优化服务
  • 专业做网站开发的公司品牌营销策略案例
  • wordpress 前台关闭广西seo搜索引擎优化
  • 江西南昌网站建设招标精准引流推广公司
  • 网站做拓扑图编辑网页怎么优化
  • 网页小游戏源码关键词搜索引擎优化推广
  • 个人简历word模板潍坊百度快速排名优化
  • 网站建设与管理代码营销型网站建设案例
  • 北京电力交易中心有限公司seo网站推广服务
  • 院校建设网站群的原因黑龙seo网站优化
  • 北京购物网站建设seo神器