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. Android记录10--android.os.NetworkOnMainThreadException异常解决办法

    2013年11月1日小光棍节 有一段时间没有发表新的博客了,最近一直在忙着开发新浪微博客户端遇到很多问题比较头痛,比如说本篇博客要讲的NetworkOnMainThreadException这个异常, ...

  2. 第三天:JavaScript的DOM对象和DOM操作HTML

    1. DOM操作HTML 1)注意:绝对不要在文档加载完成之后使用docment.write().这样会覆盖原来的文档 <body> <p>hello</p> &l ...

  3. Python自动化开发 - 生成器、迭代器

    本节内容 1.列表生成式 2.生成器 3.迭代器 一.列表生成式 需求:把列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]里,每个元素都加1 # 复制版,重新绑定 a = [0, 1, ...

  4. Class AB与Class D功放

    D类功放   又称之为数字功放,其特点是,工作效率高,体积小. D类功放的结构       第一部分为调制器,最简单的只需用一只运放构成比较器即可完成.把原始音频信号加上一定直流偏置后放在运放的正输入 ...

  5. windform 重绘Treeview "+-"号图标

    模仿wind系统界面,重绘Treeview + - 号图标 一,首先需要图片 ,用于替换原有的 +-号 二.新建Tree扩展类 TreeViewEx继承TreeView using System; u ...

  6. .net图表之ECharts随笔01-最简单的使用步骤

    找了几种绘制图表的办法,后面选定了ECharts.下载链接如下,好像不同的ECharts有不同的用法,要下对. https://gitee.com/Tuky/SomeWebFrame/tree/mas ...

  7. Webapi文件上传

    1/  multipart/form-data方式 using Abp.UI; using Abp.Web.Models; using System; using System.Collections ...

  8. EMACS快捷键

    C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建 ...

  9. 网页关闭(解决window.close在火狐下不兼容问题)

    熟悉前端的都知道,火狐默认状态非window.open的页面window.close是无效的 网上有很多人说,在火狐的地址栏输入:about:config然后找到dom.allow_scripts_t ...

  10. Swift5 语言指南(二十二) 扩展

    扩展为现有的类,结构,枚举或协议类型添加新功能.这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模).扩展类似于Objective-C中的类别.(与Objective-C类别不同,Swift扩展 ...