机器学习开发应用总结

本文详细介绍了机器学习的基本步骤,包括数据采集与标记、特征选择、数据清洗、模型选择、模型训练、模型测试以及模型的保存与加载。以手写数字识别为例,使用支持向量机(SVM)进行训练,展示了如何将模型应用于测试数据并评估其准确度。最后,讨论了模型的保存和加载,以便于后续使用。
摘要由CSDN通过智能技术生成

1.数据采集和标记

        首先采集大量的数据,并将这些数据进行标记,只有大量的数据才能避免极端现象的发生,利用大量的数据对模型进行训练,才能保证最终训练出来的模型的准确性。

2.特征选择

        在进行机器学习时,需要选取合适的特征,然后把数据保存为 样本个数×特征个数格式的 array 对象。

3.数据清洗

        这个过程就是数据清洗,即把采集到的 、不 适合用 来做机器学习训练的数据进行预处理,从而转换为适合机器学习的数据。通过数据的清洗可以达到减少计算量以及稳定模型的目的。

4.模型选择

        不同的机器学习算法模型针对特定的机器学习应用有不同的效率,所以,需要根据数据来选择最合适的模型以达到效率最大化。

5.模型训练

        在开始训练我们的模型之前,需要先把数据集分成 训练数据集和测试数据集 ,然后使用训练集来训练模型。

6.模型测试

把训练之后得到的模型用测试数据集进行测试,从而判断模型的准确度。

7模型保存和加载

8.实例(手写数字识别)

1.数据采集和标记

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
"""
sk-learn库中自带了一些数据集
此处使用的就是手写数字识别图片的数据
"""
# 导入sklearn库中datasets模块
from sklearn import datasets
# 利用datasets模块中的函数load_digits()进行数据加载
digits = datasets.load_digits()
# 把数据所代表的图片显示出来
images_and_labels = list(zip(digits.images, digits.target))
plt.figure(figsize=(8, 6))
for index, (image, label) in enumerate(images_and_labels[:8]):
    plt.subplot(2, 4, index + 1)
    plt.axis('off')
    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    plt.title('Digit: %i' % label, fontsize=20);

2.特征选择

# 将数据保存为 样本个数x特征个数 格式的array对象 的数据格式进行输出
# 数据已经保存在了digits.data文件中
print("shape of raw image data: {0}".format(digits.images.shape))
print("shape of data: {0}".format(digits.data.shape))

3.模型训练

# 把数据分成训练数据集和测试数据集(此处将数据集的百分之二十作为测试数据集)
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);

# 使用支持向量机来训练模型
from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100., probability=True)
# 使用训练数据集Xtrain和Ytrain来训练模型
clf.fit(Xtrain, Ytrain);

4.模型测试

"""
sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数
"""

# 评估模型的准确度(此处默认为true,直接返回正确的比例,也就是模型的准确度)
from sklearn.metrics import accuracy_score
# predict是训练后返回预测结果,是标签值。
Ypred = clf.predict(Xtest);
accuracy_score(Ytest, Ypred)

 运行结果

# 用训练好的模型在测试集上进行评分(0~1)1分代表最好
clf.score(Xtest, Ytest)

 运行结果

"""
将测试数据集里的部分图片显示出来
图片的左下角显示预测值,右下角显示真实值
"""
# 查看预测的情况
fig, axes = plt.subplots(4, 4, figsize=(8, 8))
fig.subplots_adjust(hspace=0.1, wspace=0.1)

for i, ax in enumerate(axes.flat):
    ax.imshow(Xtest[i].reshape(8, 8), cmap=plt.cm.gray_r, interpolation='nearest')
    ax.text(0.05, 0.05, str(Ypred[i]), fontsize=32,
            transform=ax.transAxes,
            color='green' if Ypred[i] == Ytest[i] else 'red')
    ax.text(0.8, 0.05, str(Ytest[i]), fontsize=32,
            transform=ax.transAxes,
            color='black')
    ax.set_xticks([])
    ax.set_yticks([])

 运行结果

5.模型保存与加载

# 保存模型参数
from sklearn.externals import joblib
joblib.dump(clf, 'digits_svm.pkl');

# 导入模型参数,直接进行预测
clf = joblib.load('digits_svm.pkl')
Ypred = clf.predict(Xtest);
clf.score(Xtest, Ytest)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值