原文链接:https://xiets.blog.csdn.net/article/details/130957394

版权声明:原创文章禁止转载

专栏目录:scikit-learn 专栏(总目录)

scikit-learn 官方相关网站:

  • 官网: https://scikit-learn.org/
  • 用户指南 (实例教程): https://scikit-learn.org/stable/user_guide.html
  • API (各模块、模型类): https://scikit-learn.org/stable/modules/classes.html
  • 案例: https://scikit-learn.org/stable/auto_examples/index.html
  • 入门: https://scikit-learn.org/stable/getting_started.html
  • 教程: https://scikit-learn.org/stable/tutorial/index.html
  • GitHub 仓库: https://github.com/scikit-learn/scikit-learn

其他网站(中文):https://scikit-learn.org.cn/

参考书籍:

  • Python机器学习基础教程 — [德] 安德里亚斯·穆勒 / [美] 莎拉·吉多
  • scikit-learn机器学习(第2版)— [美]加文·海克(Gavin Hackeling)

scikit-learn 安装:详情:

$ pip3 install -U scikit-learn

1. scikit-learn 简介

scikit-learn 是基于 Python 语言的用于预测数据分析的简单高效机器学习库。它提供了用于机器学习的算法,包括 分类回归降维聚类。它也提供了用于数据预处理、提取特征、优化超参数和评估模型的模块。

scikit-learn 基于 NumPy、SciPy 和 matplotlib 构建。开源,商业可用 - BSD 许可证。

2. 监督学习

输入-输出 对中进行学习的机器学习算法叫做 监督学习算法 (Supervised Learning)。在这种监督学习的算法中,用户将成对的输入和预期的输出提供给算法学习,算法会找到一种可以泛化到其他前所未见的数据中的方法,根据给定新的输入给出预测的输出。

监督学习问题主要有两种:分类(Classification) 和 回归(Regression)。

分类问题是跟进输入特征预测类别标签,输出的取值是固定的枚举值(而不是一个连续范围),表示的是定性属性(而不是数量)。例如,根据身高和体重等特征预测一个人的性别,性别只能是男性或女性,所以这是一个分类问题。

回归问题是跟进输入特征预测一个连续值,输出的取值是一个连续的浮点数范围。例如,根据性别和体重等特征预测一个人的身,身高在一个范围内可以连续取值,所以这是一个回归问题。

许多监督学习算法都能同时处理分类和回归问题,常用的监督学习算法有:最近邻、线型模型、朴素贝叶斯分类器、决策树、随机森林、梯度提升决策树、支持向量机、神经网络。

2.1 训练数据与测试数据

当拿到一组输入-输出对数据用于监督学习构建模型时,需要把数据的一部分用于训练模型,其余数据用于测试训练好的模型性能(预测新数据的准确度)。用于训练模型的数据叫做 训练数据(Training Data) 或 训练集(Training Set)。用于测试模型的数据叫做 测试数据(Test Data) 或 测试集(Test Set)。

训练集和测试集数据不能重复,不能拿训练集中出现过的数据去测试/评估模型,这样测试出的结果可能模型只是简单地记住了训练集数据,而不能泛化到新数据。

scikit-learn 中的 model_selection.train_test_split(*arrays[, ...]) 函数可以随机打乱一个矩阵数据集并进行拆分。这个函数默认将 75% 的数据及对应的标签作为训练集,剩下 25% 的数据及标签作为训练集,可以通过传递参数调整比例和打乱顺序的随机数种子。训练集与测试集的分配比例可以是随意的,但使用 25% 的数据作为测试集是很好的经验法则。

train_test_split() 函数说明:

sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)# 参数说明:
#   *arrays         具有相同 长度或shape[0] 的可索引序列, 一般是包括 输入 和 输出 两组数据。
#                   允许的输入是 列表、NumPy数组、scipy-sparse矩阵 或 pandas dataframes。
#                   输入数据 一般是 NumPy 二维矩阵数组。
#                   输出数据 一般是 一维数组(列表/NumPy一维数组)。
#
#   test_size       float 或 int 或 None。测试集数据大小。
#                   如果是float, 则应介于 0.0 和 1.0 之间, 表示要包含在拆分后测试集样本数量的比例。
#                   如果是int, 表示测试集样本的绝对数量。
#                   如果是 None, 则将该值设置为 train_size 的补集, 如果 train_size 也是 None, 它将被设置为 0.25。
#
#   train_size      float 或 int 或 None。训练集数据大小, 和 test_size 含义相似。
#                   如果为 None, 则将该值设置为 test_size 的补集。
#
#   random_state    int 或 RandomState 或 None。应用拆分之前用于打乱数据的随机数种子。
#                   如果使用固定值, 可以确保每次打乱后的结果都一样 (一般用于可复现调试模型)。
#
#   shuffle         bool, 拆分数据集前是否打乱顺序。
#
#   stratify        数组, 如果不是 None, 则以分层方式拆分数据, 将其用作类标签。
#
#   return:         返回拆分后的 训练集 和 测试集 数据。类型为: list, length=2 * len(arrays)

代码示例:

>>> import numpy as np
>>> from sklearn import model_selection
>>>
>>> X = np.random.randint(0, 10, size=(5, 3))   # 输入数据, 根据习惯, 输入数据一般用大写 X 表示
>>> y = list(range(5))                          # 输出数据, 根据习惯, 输出数据一般用小写 y 表示
>>>
>>> X                           # 输入数据, 一个二维矩阵数组, 每一行表示一个样本数据,
array([[5, 5, 4],               # 一个样本可以有多个特征, 所以用一个数组(多列)来表示一个样本数据。[0, 9, 2],[3, 5, 1],[2, 4, 4],[6, 7, 6]])
>>> y                           # 输入数据对应输出数据, 一个样本(输入数据的每一行)对应一个输出,
[0, 1, 2, 3, 4]                 # 一般情况下输出只有一个 (也有多个的情况), 所以以一维数组的形式表示。
>>>
>>> # 拆分训练和测试数据集, 返回一个列表, 元素分别为: 训练集输入, 测试集输入, 训练集输出, 测试集输出
>>> X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)
>>>
>>> X_train
array([[0, 9, 2],[2, 4, 4],[6, 7, 6]])
>>> y_train
[1, 3, 4]
>>>
>>> X_test
array([[3, 5, 1],[5, 5, 4]])
>>> y_test
[2, 0]

2.1 泛化、过拟合、欠拟合

在监督学习中,使用训练数据构建模型,然后训练好的模型能够对没见过的新数据(新数据与训练集中的数据具有相同的特性)做出准确预测,我们就说模型能够从 训练集 泛化(generalize) 到 测试集。监督学习的目标是要构建一个泛化精度尽可能高的模型。

如果模型在训练集上精准度很高,但在测试集上表现却很差(无法泛化到测试集),这被称为 过拟合(overfitting)。

如果模型经过训练集训练后,在训练集上评估测试表现都很差(无法拟合训练集),这被称为 欠拟合(overfitting)。

3. 无监督学习

数据只有输入特征,没有对应的预期输出,算法从这些只有输入特征的数据中提取知识,这种算法叫做 无监督学习算法 (Unsupervised Learning)。

无监督学习问题有 降维聚类 等。比如根据数据的若干输入特征(没有输出),对数据进行分类(手动指定目标组数),这就是一个无监督学习的聚类问题。

Python机器学习(scikit-learn):scikit-learn 简介相关推荐

  1. win7+python2.7 一些python机器学习包(scikit,xgboots等)

    去python的jar包地方去下载,https://www.lfd.uci.edu/~gohlke/pythonlibs/#vlfd 搜素自己想要的包 直接安装两个python就好,多版本共存的问题 ...

  2. 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架

    小编说  时间过的好快啊,小伙伴们是不是都快进入寒假啦?但是学习可不要落下哦!  本期教材  本期为大家发放的教材为:<Python机器学习实践指南>.<Tensorflow 实战G ...

  3. TF学习——TF之API:TensorFlow的高级机器学习API—tf.contrib.learn的简介、使用方法、案例应用之详细攻略

    TF学习--TF之API:TensorFlow的高级机器学习API-tf.contrib.learn的简介.使用方法.案例应用之详细攻略 目录 tf.contrib.learn的简介 tf.contr ...

  4. TensorFlow高层次机器学习API (tf.contrib.learn)

    TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载csv格 ...

  5. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  6. python机器学习——主成分分析理论简介

    主成分分析理论简介 一.特征降维 1.1什么是特征降维? 1.2为什么要进行特征降维? 1.3特征选择和特征抽取 二.主成分分析(PCA)理论 2.1 算法描述 2.2 PCA 在图像识别的应用 2. ...

  7. Python机器学习与实践——简介篇

    周四晚上胡哥给大家简单培训了一下nlp的一些算法,感觉受益匪浅.回去之后反省了一下,有段时间没看机器学习的东西了,nlp要抓,机器学习也要学.开个坑,记录和分享一下学习内容(书籍为<python ...

  8. 《Python机器学习与可视化分析实战》简介

    #好书推荐##好书奇遇季#<Python机器学习与可视化分析实战>,京东当当天猫都有发售.定价69元.Python机器学习与可视化入门书,配套示例源码.PPT课件.作者答疑. 本书带给你的 ...

  9. Python机器学习、深度学习库总结(内含大量示例,建议收藏)

    Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 目前,随着人工 ...

最新文章

  1. NumPy中可用的聚合函数
  2. nstimer循环引用_ios开发中经典循环引用场景?
  3. 【JavaScript学习】JavaScript对象创建
  4. Python string字符串
  5. 一步一步写算法(之合并排序)
  6. 成功安装完EASYPHP后,无法打开127.0.0.1页面的解决办法
  7. 【cornerstone】撤销标注点位(通过ctrl+z)
  8. pnpm 是更快的包管理工具
  9. 360网神防火系统 配置端口映射_IIS配置证书端口443无法访问
  10. 微信小程序data format error解决办法
  11. 【学习笔记向】零基础小白快速制作最简陋MMD(VRoid + Unity)
  12. 人工神经网络评价法案例_人工神经网络评价法
  13. PHP设置header出现警告headers already sent by (output started at......
  14. POI word 模板 字段替换
  15. 合肥工业大学计算机与信息学院复试,合肥工业大学计算机与信息学院2018考研大纲(复试)...
  16. 读书报告1500字计算机大学篇,读书报告2000字大学篇
  17. 学习html的心得体会
  18. Mashup,互联网一个方向。
  19. 归一化的matlab实现
  20. 个人Javascript学习

热门文章

  1. Chrome浏览器截取整个网页方法
  2. 获取Windows远程桌面端口
  3. JS中innerHTML、outerHTML、innerText、outerText的用法与区别
  4. Filter及FilterChain的使用详解
  5. 变压器输出整流的蓄能电容选取方法
  6. 狂神说-Mybatis笔记(总)
  7. 掌财社:掌握CCI指标捕捉爆发牛股
  8. mSystems:南土所禇海燕综述微生物生物地理学(视频)
  9. 何为世面?何为见世面?
  10. 采样开关的作用计算机控制,采样过程