第一个完整的机器学习例子

数字识别

1、数据的采集和标记

加载数据

import matplotlib.pyplot as plt
from sklearn import  datasets
digits=datasets.load_digits()#sk自带数据集
# print(digits)
#把数据所代表的图片显示出来
images_and_labels=list(zip(digits.images,digits.target))
# print(images_and_labels)#解压数据
plt.figure(figsize=(8,6),dpi=200)#尺寸
for index,(images,label) in enumerate(images_and_labels[:8]):#画8张
    plt.subplot(2,4,index+1)
    plt.axis('off')
    plt.imshow(images,cmap=plt.cm.gray_r,interpolation='nearest')
    plt.title('Digit:%i' % label,fontsize=20)

plt.show()

2、特征选择

print("shape of raw image data:{0}".format(digits.images.shape))
print("shape of data:{0}".format(digits.data.shape))#查看sklearn将数据保存为 样本个数*特征个数 格式的array对象

总共1797个训练样本,64为像素点个数,用来训练的数据是把图片的64个像素点转化为特证,直接用digits.data作为训练数据

3、数据清洗

本例中将用户手写的大小为200200的数字图片(假设)缩小为88的数字图片即为数据清洗,转化为适合机器学习的数据

4、模型选择

本例使用支持向量机作为手写识别算法的模型。

5、模型训练

要把数据分为训练数据集和测试数据集,这里我们用下列代码把数据集分出20%作为测试数据集:
tips(在sklearn 0.18及以上的版本中,出现了sklearn.cross_validation无法导入的情况,原因是新版本中此包被废弃改为model_selection)

from sklearn.model_selection import  train_test_split
Xtrain,Xtest,Ytrain,Ytest=train_test_split(digits.data,digits.target,test_size=0.20,random_state=2)

接着,使用训练数据集Xtrain,Ytrain来训练模型

from sklearn import svm
clf = svm.SVC(gamma=0.001,C=100.)
clf.fit(Xtrain,Ytrain);

6、模型测试

clf.score(Xtrain,Ytrain)#准确度测试
print(clf.score(Xtrain,Ytrain))#此例准确度为100%

7、保存此模型

下次需要预测时可以直接加载模型来进行预测,直接加载模型即可进行预测不需要从新训练
tips(新版本使用import joblib代替from sklearn.externals import joblib)

import joblib
#保存模型参数
joblib.dump(clf,'digits_svm.plk');
#导入模型参数,直接进行预测
clf=joblib.load('digits_svm.plk')
Ypred=clf.predict(Xtest);
print(clf.score(Xtrain,Ytrain))

8、结果(可视化过程)

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值