1、scikit-learn库简介

scikit-learn是一个整合了多种常用的机器学习算法的Python库,又简称skLearn。scikit-learn非常易于使用,为我们学习机器学习提供了一个很好的切入点。
 

2、机器学习基础

机器学习这门学科主要分为有监督学习、无监督学习,以及强化学习。有监督学习指的是使用有类标的训练数据构建模型,我们可以使用这个训练得到的模型对未知数据进行预测。有监督学习主要分为两大类:分类和回归。无监督学习中,我们无法事先获知各训练样本的类标值,我们需要去处理这种无类标数据或者是总体分布趋势不明朗的数据,通过无监督学习,我们可以在没有已知输出变量和反馈函数指导的情况下提取出数据集中有效信息来探索数据集的整体结构。无监督学习主要分为聚类和降维。强化学习可以理解为构建一个系统,在与环境交互的过程中提高系统的性能。 我们在创建机器学习算法模型时,通常把数据分为训练集和测试集,使用训练集数据去训练模型,再用测试集来评估模型。
 

3、用scikit-learn实现有监督学习-分类

我们用Iris数据集来训练一个分类模型,该数据集中的数据采自三种不同的鸢尾花卉(分别是山鸢尾、变色鸢尾、维吉尼亚鸢尾),这些数据表示的是萼片和花瓣的长宽,每组数据都有一个类标。在做机器学习解决分类问题的算法模型时,常常都会使用到这个数据集,scikit-learn库内置了该数据集。我们这里来处理一个任务:给定一种鸢尾花的测量数据,为该花卉分类,这里使用k近邻分类器最简单,k近邻算法搜索训练集,寻找与该数据个体最相似的k个数据。我们把给定的数据分为训练集和测试集,下面为Python实现:
import numpy as np
from sklearn import datasets
np.random.seed(0) #导入数据
iris=datasets.load_iris() X=iris.data
y=iris.target #打乱数据集中的元素
i=np.random.permutation(len(iris.data)) #前140条用作训练集,后10条用作测试集
X_train=X[i[:-10]]
y_train=y[i[:-10]]
X_test=X[i[-10:]]
y_test=y[i[-10:]] #使用k近邻分类器进行训练
from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier()
knn.fit(X_train,y_train) #预测测试集的目标值
result=knn.predict(X_test)
print(result)
print(y_test) ''' 打印结果为:
[1 2 1 0 0 0 2 1 2 0]
[1 1 1 0 0 0 2 1 2 0]
'''
可以看到,预测的目标值错了一个~

4、用scikit-learn实现有监督学习-回归

这里讲的是线性回归,线性回归指的是用训练集数据创建线性模型的过程。可以用直线方程表示:y=a*x+c ,我们计算出参数a和c,也就建好了这个线性回归模型,在计算a和c时,要保证数据集最小化残差平方和。在这个方程式中,x为训练集,y为目标值,a为斜率,c为模型所对应的直线的截距。这里再介绍一下Diabetes数据集,包含了大量糖尿病患者的生理数据以及一年后的病情发展情况,数据中前10列为生理数据,后者为目标值,下面我们就用这个数据集来练练手。
#导入线性回归模型
from sklearn import linear_model
linereg=linear_model.LinearRegression() #导入数据集并划分为训练集和测试集
from sklearn import datasets
disabets=datasets.load_diabetes()
X_train=disabets.data[:-20]
y_train=disabets.target[:-20]
X_test=disabets.data[-20:]
y_test=disabets.target[-20:] #训练模型
linereg.fit(X_train,y_train) #预测
result=linereg.predict(X_test)
print(result)
print(y_test)
''' 打印结果为:
[197.61846908 155.43979328 172.88665147 111.53537279 164.80054784
131.06954875 259.12237761 100.47935157 117.0601052 124.30503555
218.36632793 61.19831284 132.25046751 120.3332925 52.54458691
194.03798088 102.57139702 123.56604987 211.0346317 52.60335674]
[233. 91. 111. 152. 120. 67. 310. 94. 183. 66. 173. 72. 49. 64.
48. 178. 104. 132. 220. 57.]
''' #评价
score=linereg.score(X_test,y_test)
print(score)
''' 打印结果为:
0.5850753022690574
'''

5、小结

上面只讲了k近邻分类和线性回归两个学习模型,sklearn中还内置了很多其他机器学习算法模型,其中分类算法模型有K近邻、支持向量机分类、逻辑回归、随机森林、决策树、朴素贝叶斯分类器等,回归算法有线性回归、岭回归、支持向量机回归、贝叶斯回归、多项式回归等,聚类算法又包含有Knn、Kmeans等。sklearn在Python数据分析中经常会用到,常常会配合numPy、matplotlib、pandas等库一起使用,我也刚接触Python机器学习两三个月,就不多说了,以免误人子弟,如有错误欢迎指正!

机器学习之scikit-learn库的使用的更多相关文章

  1. 机器学习框架Scikit Learn的学习

    一   安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...

  2. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  3. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  4. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  5. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)

    scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...

  6. 机器学习三剑客之Numpy库基本操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  7. Scikit Learn

    Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.

  8. Python第三方库(模块)"scikit learn"以及其他库的安装

    scikit-learn是一个用于机器学习的 Python 模块. 其主页:http://scikit-learn.org/stable/. GitHub地址: https://github.com/ ...

  9. 机器学习-scikit learn学习笔记

    scikit-learn官网:http://scikit-learn.org/stable/ 通常情况下,一个学习问题会包含一组学习样本数据,计算机通过对样本数据的学习,尝试对未知数据进行预测. 学习 ...

  10. Python机器学习笔记:sklearn库的学习

    网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...

随机推荐

  1. UniGUI的 TUniPageControl控件动态拖动tabsheet的实现方法

    https://blog.csdn.net/shuiying/article/details/54932518 实现可以用鼠标动态拖动tabsheet,共三个步骤: 1.在ServerModule中, ...

  2. cxgrid回车移到下一个单元格

    cxgrid回车移到下一个单元格   cxgrid回车移到下一个单元格 作用:表格式录入全键盘操作. 设置cxgrid1Dbtableview1.optionsBehavior.goToNextCel ...

  3. 微信内置浏览器私有接口WeixinJSBridge介绍

    原文地址:http://www.3lian.com/edu/2015/05-25/216227.html 这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友 ...

  4. GitHub 教程【转】

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  5. python- 动态加载目录下所有的类

    # 背景 自动化测试框架中model层下有很多类,用来操作mysql的,使用的时候需要把全部的类加载进来,需要使用到动态加载类 # 解决方法 使用pkgutil,内置的方法,常用的话有两个方法 ite ...

  6. VS 快捷键设置

    工具 --> 选项 --> 环境 --> 键盘

  7. Linux学习笔记-基本操作1

    1>. 命令解析器2>. Linux快捷键3>. Linux 系统目录结构4>. 用户目录5>. 文件和目录操作6>. 文件和目录的属性7>. 文件权限, 用 ...

  8. <compilation debug="true" targetFramework="4.5"> 报错解决方案

    在 VS2013 下开发的 MVC4 网站,基于 .net 4.5,服务器是一台 Windows 2008 R2,运行的时候就报错了 The 'targetFramework' attribute i ...

  9. Linq to xml修改CDATA节点值

    增加节点时,我们是这样写的: xop.Document.Element("messages").Add( new XElement("message", new ...

  10. Vim使用Vundle安装代码补全插件(YouCompleteMe)

    安装 Vundle 它的使用方法很简单,安装一个插件只需要在 ~/.vimrc 按照规则中添加 Plugin 的名称,某些需要添加路径,之后在 Vim 中使用:PluginInstall既可以自动化安 ...