Python机器学习库scikit-learn入门开发示例

 更新时间:2022年07月28日 10:51:07   作者:m0_65187443  
scikit-learn是一个开源Python语言机器学习工具包,它涵盖了几乎所有主流机器学习算法的实现,并且提供了一致的调用接口。它基于Numpy和scipy等Python数值计算库,提供了高效的算法实现
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

1.数据采集和标记

先采集数据,再对数据进行标记。其中采集数据要就有代表性,以确保最终训练出来模型的准确性。

2.特征选择

选择特征的直观方法:直接使用图片的每个像素点作为一个特征。

数据保存为样本个数×特征个数格式的array对象。scikit-learn使用Numpy的array对象来表示数据,所有的图片数据保存在digits.images里,每个元素都为一个8×8尺寸的灰阶图片。

3.数据清洗

把采集到的、不合适用来做机器学习训练的数据进行预处理,从而转换为合适机器学习的数据。

目的:减少计算量,确保模型稳定性。

4.模型选择

对于不同的数据集,选择不同的模型有不同的效率。因此在选择模型要考虑很多的因素,来提高最终选择模型的契合度。

5.模型训练

在进行模型训练之前,要将数据集划分为训练数据集和测试数据集,再利用划分好的数据集进行模型训练,最后得到我们训练出来的模型参数。

6.模型测试

模型测试的直观方法:用训练出来的模型预测测试数据集,然后将预测出来的结果与真正的结果进行比较,最后比较出来的结果即为模型的准确度。

scikit-learn提供的完成这项工作的方法:

clf . score ( Xtest , Ytest)

除此之外,还可以直接把测试数据集里的部分图片显示出来,并且在图片的左下角显示预测值,右下角显示真实值。

7.模型保存与加载

当我们训练出一个满意的模型后即可将模型保存下来,这样当下次需要预测时,可以直接利用此模型进行预测,不用再一次进行模型训练。

8.实例

数据采集和标记

#导入库
%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);

特征选择

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

模型训练

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

模型测试

"""
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)

模型保存与加载

"""
将测试数据集里的部分图片显示出来
图片的左下角显示预测值,右下角显示真实值
"""
# 查看预测的情况
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([])

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

保存模型参数过程中出现如下错误:

原因:sklearn.externals.joblib函数是用在0.21及以前的版本中,在最新的版本,该函数应被弃用。

解决方法:将 from sklearn.externals import joblib改为 import joblib

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

到此这篇关于Python机器学习库scikit-learn入门开发示例的文章就介绍到这了,更多相关Python scikit-learn内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • python?教程实现?turtle海龟绘图

    python?教程实现?turtle海龟绘图

    这篇文章主要介绍了python?教程实现?turtle绘制海龟绘图,文章基于python的相关资料展开turtle绘制海龟绘图的详细内容,需要的小伙伴可以参考一下
    2022-05-05
  • Python os.mkdir()与os.makedirs()的使用区别

    Python os.mkdir()与os.makedirs()的使用区别

    这篇文章主要介绍了Python os.mkdir()与os.makedirs()的使用区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python selenium登录豆瓣网过程解析

    python selenium登录豆瓣网过程解析

    这篇文章主要介绍了python selenium登录豆瓣网过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python实现获取域名所用服务器的真实IP

    Python实现获取域名所用服务器的真实IP

    本文是给大家分享的使用python获取到域名所在服务器的真实IP,原因是现在很多的网站都使用了CDN,大家很难直接查到域名的服务器的IP,本文是使用了一个巧妙的方法,详情请仔细看看下文吧
    2015-10-10
  • 用基于python的appium爬取b站直播消费记录

    用基于python的appium爬取b站直播消费记录

    因工作需要,需要爬取相关数据,之前是爬取网页数据,可以用python的requests和Selenium进行爬取。但b站的直播消费数据网页版不能显示,只能在手机上看到,所以就有了这篇文章。需要的朋友可以参考下
    2021-04-04
  • python 制作网站小说下载器

    python 制作网站小说下载器

    这篇文章主要介绍了python 如何制作网站小说下载器,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • numpy.transpose()实现数组的转置例子

    numpy.transpose()实现数组的转置例子

    今天小编就为大家分享一篇numpy.transpose()实现数组的转置例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现带百分比的进度条

    Python实现带百分比的进度条

    本文给大家汇总介绍了3种使用Python实现带百分比进度条的代码,非常的简单实用,有需要的小伙伴可以参考下
    2016-06-06
  • python实现健康码查验系统

    python实现健康码查验系统

    这篇文章主要介绍了?python实现健康码查验系统,主要用到的是python用了opencv库和pyzbar库,文中给大家提供一段代码判断是否绿码,需要的朋友可以参考下
    2022-04-04
  • pyx文件 生成pyd 文件用于 cython调用的实现

    pyx文件 生成pyd 文件用于 cython调用的实现

    这篇文章主要介绍了pyx文件 生成pyd 文件用于 cython调用的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论

?


http://www.vxiaotou.com