【人工智能之手写字体识别】机器学习及与智能数据处理之降维算法PCA及其应用手写字体识别
文章目录
- 降维算法PCA及其应用
- 利用PCA算法实现手写字体识别,要求:
- 实验步骤
- 1. 导入数据集
- 2. 实现手写数字数据集的降维;
- 3. 比较两个模型(64维和10维)的准确率;
- 4. 对两个模型分别进行10次10折交叉验证,绘制评分对比曲线。
- 代码详解
- 结果:
- SVC
- PCA
降维算法PCA及其应用
利用PCA算法实现手写字体识别,要求:
1、实现手写数字数据集的降维;
2、比较两个模型(64维和10维)的准确率;
3、对两个模型分别进行10次10折交叉验证,绘制评分对比曲线。
实验步骤
1. 导入数据集
from sklearn.datasets import load_digits
digits = load_digits()
train = digits.data
target = digits.target
2. 实现手写数字数据集的降维;
pca = PCA(n_components=10,whiten=True)
pca.fit(x_train,y_train)
x_train_pca = pca.transform(x_train)
x_test_pca = pca.transform(x_test)
3. 比较两个模型(64维和10维)的准确率;
64维
svc = SVC(kernel = 'rbf')
svc.fit(x_train,y_train)
y_predict = svc.predict(x_test)
print('The Accuracy of SVC is', svc.score(x_test, y_test))
print("classification report of SVC\n",classification_report(y_test, y_predict,
target_names=digits.target_names.astype(str)))
10维
svc = SVC(kernel = 'rbf')
svc.fit(x_train_pca,y_train)
y_pre_svc = svc.predict(x_test_pca)
print("The Accuracy of PCA_SVC is ", svc.score(x_test_pca,y_test))
print("classification report of PCA_SVC\n", classification_report(y_test, y_pre_svc,
target_names=digits.target_names.astype(str)))
4. 对两个模型分别进行10次10折交叉验证,绘制评分对比曲线。
for i in range(100):# 创建子图plt.subplot(10,10,i+1)# 显示灰度图像plt.imshow(samples[i].reshape(8,8),cmap='gray')title = str(y_pre[i])plt.title(title,color='red')# 关闭坐标轴plt.axis('off')
plt.show()
代码详解
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
digits = load_digits()
train = digits.data
target = digits.target
x_train,x_test,y_train,y_test = train_test_split(train,target,test_size=0.2,random_state=33)
ss = StandardScaler()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)
svc = SVC(kernel = 'rbf')
svc.fit(x_train,y_train)
y_predict = svc.predict(x_test)
print('The Accuracy of SVC is', svc.score(x_test, y_test))
print("classification report of SVC\n",classification_report(y_test, y_predict,
target_names=digits.target_names.astype(str)))
# 实现手写数字数据集的降维实现手写数字数据集的降维
pca = PCA(n_components=10,whiten=True)
pca.fit(x_train,y_train)
x_train_pca = pca.transform(x_train)
x_test_pca = pca.transform(x_test)
svc = SVC(kernel = 'rbf')
svc.fit(x_train_pca,y_train)
# 比较两个模型(64维和10维)的准确率
y_pre_svc = svc.predict(x_test_pca)
print("The Accuracy of PCA_SVC is ", svc.score(x_test_pca,y_test))
print("classification report of PCA_SVC\n", classification_report(y_test, y_pre_svc,
target_names=digits.target_names.astype(str)))
samples = x_test[:100]
y_pre = y_pre_svc[:100]
plt.figure(figsize=(12,38))
# 对两个模型分别进行10次10折交叉验证,绘制评分对比曲线
for i in range(100):plt.subplot(10,10,i+1)plt.imshow(samples[i].reshape(8,8),cmap='gray')title = str(y_pre[i])plt.title(title)plt.axis('off')
plt.show()
结果:
SVC
PCA
【人工智能之手写字体识别】机器学习及与智能数据处理之降维算法PCA及其应用手写字体识别相关推荐
- svd降维 python案例_菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD
菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD 概述 从什么叫维度说开来 简单讲,shape中返回了几个数字就是几维. 一张表最多就是一维 当一个数组中存在2张3行 ...
- 机器学习实战-65:主成因分析降维算法(Principal Component Analysis)
机器学习实战-65:主成因分析降维算法(PCA) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是 ...
- 机器学习-Sklearn-04(降维算法PCA和SVD)
机器学习-Sklearn-04(降维算法PCA和SVD) 学习04 1 概述 1.1 从什么叫"维度"说开来 对于数组和Series来说,维度就是功能shape返回的结果,shap ...
- 《菜菜的机器学习sklearn课堂》降维算法PCA和SVD
降维算法PCA和SVD 什么是维度? sklearn中的降维算法 PCA 与 SVD 降维究竟是怎样实现的? PCA重要参数 n_components 迷你案例:高维数据的可视化 附录 PCA参数列表 ...
- 手语识别 机器学习_聆听无声的话语:手把手教你用ModelArts实现手语识别
摘要:ModelArts,化作我们与听力障碍之间的一座沟通桥梁. 据统计,我国有超过2000万人有听力语言障碍,每年有约3万名婴儿生来就失去了聆听的机会.或许是因为缺少与没有听力障碍的人交流的途径,环 ...
- 【人工智能】机器学习及与智能数据处理Python使用朴素贝叶斯算法对垃圾短信数据集进行分类
朴素贝叶斯算法 输入:样本集合D={(x_1,y_1),(x_2,y_2) (x_m,y_m); 待预测样本x; 样本标记的所有可能取值{c_1,c_2,c_3 c_k}; 样本输入变量X的每个属性变 ...
- 机器学习实战(十二)降维(PCA、SVD)
目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...
- 画出降维后的图片_机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD...
PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...
- Sklearn中的降维算法PCA和SVD --from菜菜机器学习
1.PCA降维概述 在降维过程中,我们会减少特征的数量,这意味着删除数据,数据量变少则表示模型可以获取的信息会变少,模型的表现可能会因此受影响.同时,在高维数据中,必然有一些特征是不带有有效的信息的( ...
- 机器学习——经典降维算法与框架综述
目录 综述 一.介绍 二. 降维算法回顾 1.KNN 1.1 KNN核心思想 1.2 KNN算法流程 1.3 KNN算法优缺点 2.线性降维 (1)PCA 2.1.1 PCA简介 2.1 ...
最新文章
- HDU1002(高精度模拟加法)
- es6 ik分词热更新MySQL_rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
- 应用按home键无最近应用
- python pip配置镜像源:douban不能下载aliyun可以下载
- 初识Mysql(part18)--我需要知道的4个关于联结的小知识点
- java读取gxk文件,Java中常见的IO流及其使用
- Vmware安装CentOS7后访问不了外网
- 在线等:“实习拿到两个不太好的 offer,去腾讯还是去阿里?”
- 【日常】ICS的lab7攻略和最近生活的吐槽
- Info.plist信息
- 二阶滤波器matlab代码,双二阶滤波器之MATLAB设计及C语言实现
- DES加密解密算法(简单、易懂、超级详细)
- ios开发之切换RootViewController
- CSV文件分割工具开发-python版
- Java 下载多个文件打成zip压缩包
- html复制并弹窗提示已复制,如何调用handsome主题自带的弹窗提示实现复制弹窗提醒以及个性化提示...
- 解密阿里云大规模深度学习性能优化实践
- 十大优秀编程项目,让你的简历金光闪闪
- Python处理CSV,Excel,PDF和图片
- /etc/profile 和 /etc/profile.d/ 的区别