Python机器学习(scikit-learn):scikit-learn 简介
原文链接: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 简介相关推荐
- win7+python2.7 一些python机器学习包(scikit,xgboots等)
去python的jar包地方去下载,https://www.lfd.uci.edu/~gohlke/pythonlibs/#vlfd 搜素自己想要的包 直接安装两个python就好,多版本共存的问题 ...
- 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
小编说 时间过的好快啊,小伙伴们是不是都快进入寒假啦?但是学习可不要落下哦! 本期教材 本期为大家发放的教材为:<Python机器学习实践指南>.<Tensorflow 实战G ...
- TF学习——TF之API:TensorFlow的高级机器学习API—tf.contrib.learn的简介、使用方法、案例应用之详细攻略
TF学习--TF之API:TensorFlow的高级机器学习API-tf.contrib.learn的简介.使用方法.案例应用之详细攻略 目录 tf.contrib.learn的简介 tf.contr ...
- TensorFlow高层次机器学习API (tf.contrib.learn)
TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载csv格 ...
- Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...
- python机器学习——主成分分析理论简介
主成分分析理论简介 一.特征降维 1.1什么是特征降维? 1.2为什么要进行特征降维? 1.3特征选择和特征抽取 二.主成分分析(PCA)理论 2.1 算法描述 2.2 PCA 在图像识别的应用 2. ...
- Python机器学习与实践——简介篇
周四晚上胡哥给大家简单培训了一下nlp的一些算法,感觉受益匪浅.回去之后反省了一下,有段时间没看机器学习的东西了,nlp要抓,机器学习也要学.开个坑,记录和分享一下学习内容(书籍为<python ...
- 《Python机器学习与可视化分析实战》简介
#好书推荐##好书奇遇季#<Python机器学习与可视化分析实战>,京东当当天猫都有发售.定价69元.Python机器学习与可视化入门书,配套示例源码.PPT课件.作者答疑. 本书带给你的 ...
- Python机器学习、深度学习库总结(内含大量示例,建议收藏)
Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 目前,随着人工 ...
最新文章
- NumPy中可用的聚合函数
- nstimer循环引用_ios开发中经典循环引用场景?
- 【JavaScript学习】JavaScript对象创建
- Python string字符串
- 一步一步写算法(之合并排序)
- 成功安装完EASYPHP后,无法打开127.0.0.1页面的解决办法
- 【cornerstone】撤销标注点位(通过ctrl+z)
- pnpm 是更快的包管理工具
- 360网神防火系统 配置端口映射_IIS配置证书端口443无法访问
- 微信小程序data format error解决办法
- 【学习笔记向】零基础小白快速制作最简陋MMD(VRoid + Unity)
- 人工神经网络评价法案例_人工神经网络评价法
- PHP设置header出现警告headers already sent by (output started at......
- POI word 模板 字段替换
- 合肥工业大学计算机与信息学院复试,合肥工业大学计算机与信息学院2018考研大纲(复试)...
- 读书报告1500字计算机大学篇,读书报告2000字大学篇
- 学习html的心得体会
- Mashup,互联网一个方向。
- 归一化的matlab实现
- 个人Javascript学习