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. cxGrid实现取消过滤和排序后定位到首行(单选和多选)

    cxGrid实现取消过滤和排序后定位到首行(单选和多选) 原创 2013年10月06日 18:42:24 2107 DataContoller中的函数FocusedRecordIndex没有反应,Fo ...

  2. Android-Kotlin简单计算器功能

    上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 选择包名,然后右键: 选择Class类型,会有class: 创建CounterCla ...

  3. !!! no internal routing support, rebuild with pcre support !!!

    sudo apt-get install libpcre3 libpcre3-dev sudo pip install uwsgi -I --no-cache-dir

  4. 利用GDI+处理图像,包括图像的的裁剪显示、转置、镜像、简单旋转、变形等。

    一.图像的裁剪显示:有时程序需要显示图像的一部分而不是全部.实例代码如下: CDC* pDC = GetDC(); Graphics graph(pDC->GetSafeHdc()); Imag ...

  5. Ocelot入门实践

    博主是第一次写技术文档,一是对这两年工作以来的一些技术和经验进行整理,二也是希望能和大家多多分享交流,如有写的不对的地方望大家多多指正.进入正题 Ocelot 概念就不说了,大家自行百度,今天做一个O ...

  6. CentOS 7 - 配置服务实现开机自启动

    新建系统服务描述文件 cd /etc/systemd/system sudo vim myapp.service 添加以下配置: [Unit] # 这里添加你的服务描述 Description=mya ...

  7. 说一下acad的bug及问题

    using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk. ...

  8. 大众点评Cat--架构分析

    转自:http://blog.csdn.net/szwandcj/article/details/51025669 Cat功能强大且多,光日志的报表和图表分析就有十几种,但文档却很少,寥寥无几找到一些 ...

  9. Python之分支结构

    if lengeh >= 100: #每个条件后面要使用冒号 if lengeh>=10000: ") elif lengeh>=1000: ') else: pass e ...

  10. 【Vue】【Router】手动跳转用 this.$router.push() 时 $router 未定义的问题

    初入Vue,手写路由跳转时的问题: toXxxRoute: () => { this.$router.push({'path': '/xxx', 'name': 'xxx'}) } 由于使用了箭 ...