机器学习(四)对PCA降维后的手写体数字图片数据分类

机器学习(四)对PCA降维后的手写体数字图片数据分类

一: 实验内容: 使用sklearn.decomposition的PCA类对手写体数字图片数据进行降维;使用sklearn.neural_network的MLPClassifier类对降维后的数据训练分类模型,对测试数据进行分类,要求分类准确率达到80%以上。

from sklearn.neural_network import MLPClassifier
from sklearn.decomposition import PCA
import numpy
import pandas
import joblib
print("1.载入训练数据,对自变量进行标准化,输出训练数据的样本数……")
trainData = pandas.read_csv("digits_training5.csv")
xTrain = trainData.values[:,1:]
yTrain = trainData.values[:,0]
def normalizeData(X):
    return X- numpy.mean(X,axis=0)
xTrain = normalizeData(xTrain)
print('装载训练数据: {0} 条'.format(xTrain.shape[0]))
# PCA数据降维
print('2.使用PCA对数据降维,取累积贡献率超过98%的前K个元素……')
pca = PCA(n_components=0.98,svd_solver='full')
# print(pca.n_components)
xTrain = pca.fit_transform(xTrain)
# print(newX)
print("选取了 {}个主成分".format(xTrain.shape[1]))
print("训练数据维度:{}".format(xTrain.shape))
print("3.使用神经网络(多层感知机)训练分类模型")
# 构建模型
mpl = MLPClassifier(solver="lbfgs",alpha=1e-5,hidden_layer_sizes=(48,24),random_state=1,max_iter=10000)
# 训练模型
mpl.fit(xTrain,yTrain)
print("4.保存分类模型……")
joblib.dump(mpl,'mlpNN_pca.m')
print("5.载入测试数据,对自变量进行标准化,输出测试数据的样本数……")
testData = pandas.read_csv("digits_testing5.csv")
xTest = testData.values[:,1:]
yTest = testData.values[:,0]
xTest = normalizeData(xTest)
xTest = pca.transform(xTest)
print('测试数据维度:{}'.format(xTest.shape))
print("6.使用模型对测试数据分类……")
model = joblib.load('mlpNN_pca.m')
equal = model.predict(xTest)
print("输出模型准确率……")
print("错误:",(equal!=yTest).sum())
print("测试数据准确率:",(equal==yTest).sum()/len(yTest))

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Did然

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

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

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

打赏作者

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

抵扣说明:

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

余额充值