PCA算法-手写数字降维可视化

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()

.PCA算法-手写数字降维预测

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
from sklearn import decomposition
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 )

predictions = mlp.predict(x_test)
print(classification_report(predictions, y_test))
print(confusion_matrix(predictions, y_test))

pca = decomposition.PCA()
pca.fit(x_data)

# 方差
pca.explained_variance_

# 方差占比
pca.explained_variance_ratio_

variance = []
for i in range(len(pca.explained_variance_ratio_)):variance.append(sum(pca.explained_variance_ratio_[:i+1]))
plt.plot(range(1,len(pca.explained_variance_ratio_)+1), variance)
plt.show()

pca = decomposition.PCA(whiten=True,n_components=0.8)
pca.fit(x_data)

pca.explained_variance_ratio_

x_train_pca = pca.transform(x_train)
mlp = MLPClassifier(hidden_layer_sizes=(100,50) ,max_iter=500)
mlp.fit(x_train_pca,y_train )

x_test_pca = pca.transform(x_test)
predictions = mlp.predict(x_test_pca)
print(classification_report(predictions, y_test))
print(confusion_matrix(predictions, y_test))

机器学习实战-PCA算法-26相关推荐

  1. 机器学习实战-KNN算法-20

    机器学习实战-KNN算法-鸢尾花分类 # 导入算法包以及数据集 from sklearn import neighbors from sklearn import datasets from skle ...

  2. 机器学习--主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?

    原文链接:主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是"投影"?_天下对手教会少林武僧-CSDN博客_pca投影矩阵 这是从网上看到的PCA算 ...

  3. 每天五分钟机器学习:PCA算法如何确定数据压缩降维的最佳维度?

    本文重点 上节课程中我们已经学习了pca算法,已经知道了如何将n维特征变量降到k维,k是PCA算法的一个参数,也被称为主成分的数量.那么现在就产生了一个问题,这个问题就是如何选择K,因为PCA要做的就 ...

  4. 机器学习实战——PCA降维

    文章目录 1 降维技术 2 PCA 2.1 移动坐标轴 2.2 在NumPy中实现PCA 3 示例:利用PCA对半导体制造数据降维 4 总结 Dimensionality reduction tech ...

  5. 机器学习实战-SVM算法-27

    SVM算法-线性分类 import numpy as np import matplotlib.pyplot as plt from sklearn import svm # 创建40个点 x_dat ...

  6. 机器学习实战8-Apriori算法

    1. 用途和原理 1.1 用途 用于关联分析,即在大规模数据中寻找有趣的关系,有两种形式:频繁项集和关联规则.频繁项集:指经常出现在一块的物品集合.关联规则:暗示两种物品之间可能存在很强的关系.典型一 ...

  7. 机器学习实战-FP-growth算法

    本章内容 发现事物数据中的公共模式 FP-growth算法 发现Twitter源中共现词 搜索引擎自动补全查询此项,可以找出互联网上经常一块出现的词对.这需要一种高效发现频繁项集的方法.FP-grow ...

  8. 机器学习实战-回归算法-18

    回归算法-波士顿房价预测 from sklearn.datasets import load_boston import numpy as np import pandas as pd import ...

  9. 我想去做机器学习 接下来发一些机器学习实战的算法

    kNN算法  K近邻  简单说就是找出最近的K个点然后找出他们的分类最多的就是本身 from numpy import * #导入包numpy import operator #运算符 def cre ...

最新文章

  1. mysql事件调度定时任务_详解MySQL用事件调度器Event Scheduler创建定时任务
  2. 日常python常见问题
  3. PHP读取创建txt,doc,xls,pdf类型文件
  4. netbeans7.4_NetBeans 7.2 beta:更快,更有用
  5. 桌面图标设计里的计算机是灰色的,小技巧教您如何将Windows 10上的桌面图标设置中的回收站为灰色!...
  6. java filterinputstream_java.io.FilterInputStream.close()
  7. js中document.documentElement 和document.body 以及其属性 clientWidth等
  8. 联邦调查局严重夸大了加密威胁数字,从而想获得对手机的访问权限
  9. 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
  10. IDC 网络数据存储
  11. 参数默认值,剩余参数,拓展参数(default spread rest parameter)
  12. 16款app源码下载收集
  13. easypoi一对多导入_easypoi导入Excel最佳实践
  14. varnish 高性能加速器
  15. Android 保持屏幕不熄屏
  16. mysql主从复制,互为主从与读写分离
  17. python飞机大战碰撞检测_pygame制作飞机大战4——敌机出现、碰撞检测、增加声音、分数记录...
  18. github时好时坏连接不上的问题
  19. 2018总结----对共享单车的思考
  20. 『The ShardingSphere Global Echo』Vol.5

热门文章

  1. PHP7.0连接DB
  2. python3迭代器和可迭代对象_一文读懂 Python3 可迭代对象、迭代器、生成器区别...
  3. 计算机组成与结构第二章ppt,计算机组成原理(华科版)第二章 运算方法与运算器.ppt...
  4. Validate使用及配置
  5. postgis启动_postgresql的安装和启动方法
  6. python客户价值分析_[Python数据挖掘]第7章、航空公司客户价值分析
  7. python使用install_用 python setup.py install 安装 matplotlib 报错
  8. 平板电脑安装软件_概述嵌入式工业平板电脑的安装方法和注意事项!
  9. mysql i o 高_经典案例:磁盘I/O巨高排查全过程
  10. pythonsocket数据对接_python socket通信 网站之间数据交流