【人工智能之手写字体识别】机器学习及与智能数据处理之降维算法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

在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我们可以使用机器学习型来对PCA降维后的手写数字图片数据进行分类。常用的机器学习型有决策树、支持向量机、逻辑回归、神经网络等。PCA(主成分分析)是一种常见的降维技术,它可以将高维数据转换为低维表示,并保留尽可能多的信息。在 PCA 中,我们将原始数据投影到新的坐标系上,使得数据在新坐标系下的方差最大化。因此,PCA 可以用来识别数据中的主要方向或主要成分。 在进行 PCA 降维后,我们可以使用聚类算法(如 k-means)将数据进行分类。聚类算法可以将相似的数据点聚集在一起,从而使得我们能够对数据进行更好的理解和分析。 具体地,PCA 降维后的数据可以通过以下步骤进行分类: 1. 将数据投影到 PCA 得到的新坐标系上。 2. 使用聚类算法(如 k-means)将数据进行分组。 3. 对于每一组数据,我们可以计算它们在原始数据空间中的中心点,以及它们之间的距离和相似度。 4. 对于新的未知数据点,我们可以通过投影到 PCA 得到的新坐标系上,然后将其分类到最近的中心点所在的组中。 总之,PCA 可以帮助我们降低数据的维度,并找到数据中的主要成分。然后,我们可以使用聚类算法将数据分类,从而获得更好的理解和分析。 ### 回答2: PCA降维是一种流行的数据降维技术,适用于高维数据分析和处理。在手写数字分类问题中,许多方法都可以结合PCA来处理高维数据,例如支持向量机(SVM)、朴素贝叶斯分类器和逻辑回归等。 首先,在手写数字分类问题中,图片数据集通常包含许多特征,例如像素的灰度值,每个像素都可以看作是一个特征。高维特征空间可能增加了计算负担,但是使用PCA降维可以将特征空间的维度降低,使得型更易于处理。PCA降维可以实现将特征空间投影到一个低维空间上,通常是二维或三维空间,从而减少冗余特征并去除噪声,提高型的分类准确率。 其次,实施PCA降维有许多步骤。首先,需要标准化输入数据集以消除单位不同之间的偏差。接下来,计算数据集的协方差矩阵,并找到协方差矩阵的主成分,即固有矢量,这些固有矢量在数据集中占据的方差最大。然后,通过将数据集投影到主成分轴上,将数据从高维度空间投影到低维度空间上,选取前n个主成分,进行数据降维。 最后,在手写数字分类任务中,PCA降维可以与其他分类算法结合使用,例如SVM。使用PCA降维后,可以将数据集投影到低维空间上,并使用SVM分类器对数据集进行分类。在实际的应用中,PCA降维可以大大提高型训练和测试的速度和准确率。通过缩小特征空间,我们能够更轻松地理解数据并识别式、优化神经网络训练和测试的过程,从而更好地解决手写数字分类问题。 ### 回答3: PCA(Principal Component Analysis,主成分分析)是一种常用的降维技术,它可以将高维数据降至低维数据,同时保留原始数据的主要信息,提高数据处理效率。手写数字图片数据分类是指将手写数字图片按照数字进行分类,通常采用机器学习算法进行分类。 利用PCA降维后的手写数字图片数据分类,其实就是将原始高维数据进行降维处理,然后再进行分类。PCA通过将原始数据进行线性变换,将原始数据映射到新的低维空间中,同时保留原始数据的主要信息。这样可以减少原始数据的特征数量,提高数据的处理效率,同时保留原始数据的主要特征。 在手写数字图片数据分类中,可以使用PCA将每个数字的图片数据降维,并提取图片数据的主要特征。然后可以使用机器学习算法降维后的数据进行分类,比如支持向量机(Support Vector Machine, SVM)、决策树(Decision Tree)等。 具体做法是首先对每个数字的图片数据进行PCA降维处理,将高维数据降至低维数据,同时保留原始数据的主要信息。然后将降维后的数据输入到机器学习算法中进行分类,根据输入数据的不同特征和分类算法的不同,可以得到不同的分类结果。最后根据实际情况,对分类结果进行评估和优化。 总之,PCA降维后的手写数字图片数据分类是一种常用的数据处理和分类方法,可以提高数据处理效率和分类准确率,是机器学习和图像识别领域不可缺少的重要技术。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南蓬幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值