Hero Circle Shape
Hero Moon Shape
Hero Right Shape
tokenpocket钱包官网版app正版|sklearn库是什么

tokenpocket钱包官网版app正版|sklearn库是什么

  • 作者: tokenpocket钱包官网版app正版
  • 2024-03-09 22:22:45

非常详细的sklearn介绍-CSDN博客

>

非常详细的sklearn介绍-CSDN博客

非常详细的sklearn介绍

最新推荐文章于 2024-01-23 14:53:24 发布

机器学习算法那些事

最新推荐文章于 2024-01-23 14:53:24 发布

阅读量10w+

收藏

5.7k

点赞数

1k

分类专栏:

机器学习算法

文章标签:

人工智能

数据挖掘

编程语言

原文链接:https://mp.weixin.qq.com/s?__biz=MzU0MDQ1NjAzNg==&mid=2247495636&idx=1&sn=4e77279e94393c9c8184129d5ddf57ce&chksm=fb3a4adfcc4dc3c9040e127853e5bfc51eee813e70201babccb15ae18e24bccbf4e91af4847c&token=64084786&lang=zh_CN#rd

版权

机器学习算法

专栏收录该内容

21 篇文章

191 订阅

订阅专栏

0

引言

Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

在 Sklearn 里面有六大任务模块:分别是分类、回归、聚类、降维、模型选择和预处理,如下图从其官网的截屏。

要使用上述六大模块的方法,可以用以下的伪代码,注意 import 后面我用的都是一些通用名称,如 SomeClassifier, SomeRegressor, SomeModel,具体化的名称由具体问题而定,比如

SomeClassifier = RandomForestClassifier SomeRegressor = LinearRegression SomeModel = KMeans, PCA SomeModel = GridSearchCV, OneHotEncoder

上面具体化的例子分别是随机森林分类器、线性回归器、K 均值聚类、主成分分析、网格追踪法、独热编码。

分类 (Classification)

from sklearn import SomeClassifier

from sklearn.linear_model import SomeClassifier

from sklearn.ensemble import SomeClassifier

回归 (Regression)

from sklearn import SomeRegressor

from sklearn.linear_model import SomeRegressor

from sklearn.ensemble import SomeRegressor

聚类 (Clustering)

from sklearn.cluster import SomeModel

降维 (Dimensionality Reduction)

from sklearn.decomposition import SomeModel

模型选择 (Model Selection)

from sklearn.model_selection import SomeModel

预处理 (Preprocessing)

from sklearn.preprocessing import SomeModel

SomeClassifier, SomeRegressor, SomeModel 其实都叫做估计器 (estimator),就像 Python 里「万物皆对象」那样,Sklearn 里「万物皆估计器」。

此外,Sklearn 里面还有很多自带数据集供,引入它们的伪代码如下。

数据集 (Dataset)

from sklearn.datasets import SomeData

本贴我们用以下思路来讲解:

第一章介绍机器学习,从定义出发引出机器学习四要素:数据、任务、性能度量和模型。加这一章的原因是不把机器学习相关概念弄清楚之后很难完全弄明白 Sklearn。 第二章介绍 Sklearn,从其 API 设计原理出发分析其五大特点:一致性、可检验、标准类、可组合和默认值。最后再分析 Sklearn 里面自带数据以及储存格式。 第三章介绍 Sklearn 里面的三大核心 API,包括估计器、预测器和转换器。这一章的内容最重要,几乎所有模型都会用到这三大 API。 第四章介绍 Sklearn 里面的高级 API,即元估计器,有可以大大简化代码量的流水线 (Pipeline 估计器),有集成模型 (Ensemble 估计器)、有多类别-多标签-多输出分类模型 (Multiclass 和 Multioutput 估计器) 和模型选择工具 (Model Selection 估计器)。

本帖目录如下:

很多介绍 Sklearn 的文章是不会像我这么详细介绍「机器学习」里的概念的,但是不弄清出这些概念或术语,学 Sklearn 只是走马观花,只看到表面,抓不到实质。

建议认真仔细读第一章!

建议认真仔细读第一章!

建议认真仔细读第一章!

1

机器学习简介

1.1

定义和组成元素

什么是机器学习?字面上来讲就是 (人用) 计算机来学习。谈起机器学习就一定要提起汤姆米切尔 (Tom M.Mitchell),就像谈起音乐就会提起贝多芬,谈起篮球就会提起迈克尔乔丹,谈起电影就会提起莱昂纳多迪卡普里奥。米切尔对机器学习定义的原话是:

A computer program is said to learn from experience E with respect to some class of tasks  T and performance measure P if its performance at  tasks in T, as measured by P, improves with experience E.

整段英文有点抽象难懂对吗?首先注意到两个词 computer program 和 learn,翻译成中文就是机器 (计算机程序) 和学习,再把上面英译中:

假设用性能度量 P 来评估机器在某类任务 T 的性能,若该机器通利用经验 E 在任务 T 中改善其性能 P,那么可以说机器对经验 E 进行了学习。

在该定义中,除了核心词机器和学习,还有关键词经验 E,性能度量 P 和任务 T。在计算机系统中,通常经验 E 是以数据 D 的形式存在,而机器学习就是给定不同的任务 T 从数据中产生模型 M,模型 M 的好坏就用性能度量 P 来评估。

由上述机器学习的定义可知机器学习包含四个元素

数据 (Data) 任务 (Task) 性能度量 (Quality Metric) 模型 (Model)

下面四小节分别介绍数据、任务、性能度量和模型。

1.2

数据

数据 (data) 是经验的另一种说法,也是信息的载体。数据可分为

结构化数据和非结构化数据 (按数据具体类型划分) 原始数据和加工数据 (按数据表达形式划分) 样本内数据和样本外数据 (按数据统计性质划分)

结构化和非结构化

结构化数据 (structured data) 是由二维表结构来逻辑表达和实现的数据。非结构化数据是没有预定义的数据,不便用数据库二维表来表现的数据。

非结构化数据

非结构化数据包括图片,文字,语音和视屏等如下图。

对于以上的非结构数据,相关应用实例有

深度学习的卷积神经网络 (convolutional neural network, CNN) 对图像数据做人脸识别或物体分类 深度学习的循环神经网络 (recurrent neural network, RNN) 对语音数据做语音识别或机器对话,对文字数据做文本生成或阅读理解 增强学习的阿尔法狗 (AlphaGo) 对棋谱数据学习无数遍最终打败了围棋世界冠军李世石和柯洁

计算机追根到底还是只能最有效率的处理数值型的结构化数据,如何从原始数据加工成计算机可应用的数据会在后面讲明。

结构化数据

机器学习模型主要使用的是结构化数据,即二维的数据表。非结构化数据可以转换成结构化数据,比如把

图像类数据里像素张量重塑成一维数组 文本类数据用独热编码转成二维数组

对于结构化数据,我们用勒布朗詹姆斯 (Lebron James) 四场比赛的数据举例。

下面术语大家在深入了解机器学习前一定要弄清楚:

每行的记录 (这是一场比赛詹姆斯的个人统计) ,称为一个示例 (instance) 反映对象在某方面的性质,例如得分,篮板,助攻,称为特征 (feature) 或输入(input) 特征上的取值,例如「示例 1」对应的 27, 10, 12 称为特征值 (feature value) 关于示例结果的信息,例如赢,称为标签 (label) 或输出 (output) 包含标签信息的示例,则称为样例 (example),即样例 = (特征, 标签) 从数据中学得模型的过程称为学习 (learning) 或训练 (training) 在训练数据中,每个样例称为训练样例 (training example),整个集合称为训练集(training set)

原始和加工

计算机处理数值型的结构型数据最有效率,但是现实世界到处出是原始数据,分为两类

非结构数据比如图片和文字型数据 (情况一) 结构型数据的分类型变量 (情况二)

图像性数据

拿情况一的图片为例,通过特定函数 imread 将彩色图片用 RGB 像素表示出来,再按红绿蓝的顺序,将所有像素排成一个数值列向量 (column vector),而计算机可以接受这样的输入。具体转换过程见下图。

文本型数据

推特 (twitter) 的每条推文 (tweet) 规定只能发 280 个字符。在编码推文时,将 280 个字符的序列用独热编码 (one-hot encoding) 到包含 128 个字符的 ASCII 表,如下所示。

这样,每条推文都可以编码为 2 维张量形状 (280, 128),比如一条 tweet 是 “I love python :)”,这句话映射到 ASCII 表变成:

如果收集到 1 百万条推文,那么整个数据集的形状为 (1000000, 280, 128)。传统机器学习的对率回归可以来做情感分析。

分类型变量

篮球比赛结果非输即赢,是一个二类 (binary class) 变量

二类变量用「0-1编码」,比如比赛结果= {赢, 输} 表示成 y= [1 0 0 1],1 代表赢,0 代表输。

而足球比赛结果是有赢、平、输三种,是一个多类 (multi-class) 变量。

多类变量分别用 0, 1, 2 来表示,那么 y = [0 1 0 2]。但更常见的是用独热编码 (one-hot encoding),即

样本内和样本外

在统计中,把研究对象的全体称为总体 (population),而把组成总体的各个元素称为个体,把从总体中抽取的若干个体称为样本 (sample)。

举个调查中国男性平均身高的例子:

全国的男性就是总体 每个男性是个体

普查所有男性金钱花费和时间成本太高,通常会抽取若干男性作为样本,计算样本里的男性平均身高作为总体里的所有男性平均身高的推理 (inference)。

统计学中做的事情就是用样本数据的统计 (statistics) 来推出总体数据的参数 (parameter)。样本数据也叫做样本内数据,除样本内数据之外的总体数据叫做样本外数据。

在机器学习中,样本内和样本外数据的定义稍微有些不同,如下图:

样本内数据是用来训练模型的数据,也叫训练数据。它们是已知的,可计算统计的。

样本外数据是未来的没见过的新数据。它们是未知的,不可计算统计的。

机器学习在样本内数据训练模型用来预测:

样本内预测:根据训练模型对样本内数据进行预测,可与已知标签比较来评估模型表现 样本外预测:根据训练模型对样本外数据进行预测,不能与未知的标签比较

1.3

任务

根据学习的任务模式 (训练数据是否有标签),机器学习可分为四大类:

有监督学习 (有标签) 无监督学习 (无标签) 半监督学习 (有部分标签) 增强学习 (有评级标签)

深度学习只是一种方法,而不是任务模式,因此与上面四类不属于同一个维度,但是深度学习与它们可以叠加成:深度有监督学习、深度非监督学习、深度半监督学习和深度增强学习。迁移学习也是一种方法,也可以分类为有监督迁移学习、非监督迁移学习、半监督迁移学习和增强迁移学习。

下图画出机器学习各类之间的关系。

由于 Sklearn 里面模型主要处理「有监督学习」和「无监督学习」两类,我们接下来也只讨论这两类。

有监督学习

有监督学习 (supervised learning) 利用输入数据及其对应标签来训练模型。这种学习方法类似学生通过研究问题和参考答案来学习,在掌握问题和答案之间的对应关系后,学生可自己给出相似新问题的答案了。

在有监督学习中,数据 = (特征,标签),而其主要任务是分类和回归。以上述詹姆斯的个人统计为例。

分类

如果预测的是离散值 (discrete value),例如比赛结果赢或输,此类学习任务称为分类 (classification)。

回归

如果预测的是连续值 (continuous value),例如詹姆斯效率 65.1, 70.3 等等,此类学习任务称为回归 (regression)。

无监督学习

无监督学习 (unsupervised learning) 是找出输入数据的模式。比如,它可以根据电影的各种特征做聚类,用这种方法收集数据为电影推荐系统提供标签。此外无监督学习还可以降低数据的维度,它可以帮助我们更好的理解数据。

在无监督学习中,数据 = (特征,)。

聚类

除了根据詹姆斯个人统计来预测骑士队输赢或者个人效率值外,我们还可以对该数据做聚类 (clustering),即将训练集中的数据分成若干组,每组成为一个簇 (cluster)。

假设聚类方法将数据聚成二个簇 A 和 B,如下图

后来发现簇 A 代表赢,簇 B 代表输。聚类的用处就是可以找到一个潜在的原因来解释为什么样例 1 和 3 可以赢球。难道真的是只要詹姆斯三双就可以赢球?

降维

注:下面对降维的理解不是那么严谨,只为了让小白对降维大概有个概念。

詹姆斯完整统计数据还有抢断、盖帽和犯规,但这些对预测比赛输赢、效率值都没什么用,因此可以通过降维的方法将其去除。

1.4

性能度量

回归和分类任务中最常见的误差函数以及一些有用的性能度量如下。

回归任务的误差函数估量在数据集 D 上模型的连续型预测值 h(x) 与连续型真实值 y 的距离,h(x) 和 y 可以取任意实数。误差函数是一个非负实值函数,通常使用 ED[h] 来表示。图表展示如下。

分类任务的误差函数估量在数据集 D 上模型的离散型预测值 h(x) 与离散型真实值 y 的不一致程度,惯例是 y 和 h(x) 取±1,比如正类取 1 负类取 -1。图表展示如下。

除上述损失函数之外,分类任务还有很多其他有用的性能度量。

 

错误率:分类错误的样本数占样本总数的比例称为错误率 (error rate),相应的分类正确的样本数占样本总数的比例称为精度 (accuracy)。在 10 个样本中有 2 个样本分类错误,则错误率为 20%,而精度为 80%。

查准率和查全率:错误率和精度虽然常用,但是不能满足所有任务需求。假定用训练好的模型预测骑士赢球,显然,错误率衡量了多少比赛实际是赢球但预测成输球。但是若我们关心的是“预测出的比赛中有多少是赢球”,或“赢球的比赛中有多少被预测出了”,那么错误率这个单一指标显然就不够用了,这时需要引进更为细分的性能度量,即查准率 (precision) 和查全率 (recall)。

其他概念比如混淆矩阵、ROC、AUC 我们再下帖的实例用到时再细讲。

1.5

模型

有监督模型如下图所示:

无监督模型包括各种聚类分析 (KMeans, DBSCAN)、主成分分析 (PCA)、独立成分分析 (ICA)、隐含狄利克雷分配 (LDA) 等等。

如要了解更多机器学习的细节,请参考本帖次条的〖机器学习帖子汇总〗,里面是我写的所有关于「有监督学习」的内容。

费了这么多时间来介绍机器学习,无非就是让大家在使用 Sklearn 时知道自己在做什么,知道那些概念在说什么就够了。

2

Sklearn 数据

Sklearn 和之前讨论的 NumPy, SciPy, Pandas, Matplotlib 相似,就是一个处理特殊任务的包,Sklearn 就是处理机器学习 (有监督学习和无监督学习) 的包,更精确的说,它里面有六个任务模块和一个数据引入模块:

有监督学习的分类任务 有监督学习的回归任务 无监督学习的聚类任务 无监督学习的降维任务 数据预处理任务 模型选择任务 数据引入

本节就来看看 Sklearn 里数据格式和自带数据集。

2.1

数据格式

在 Sklean 里,模型能即用的数据有两种形式:

Numpy 二维数组 (ndarray) 的稠密数据 (dense data),通常都是这种格式。 SciPy 矩阵 (scipy.sparse.matrix) 的稀疏数据 (sparse data),比如文本分析每个单词 (字典有 100000 个词) 做独热编码得到矩阵有很多 0,这时用 ndarray 就不合适了,太耗内存。

上述数据在机器学习中通常用符号 X 表示,是模型自变量。它的大小 = [样本数, 特征数],图下图所示。该房屋数据有 21000 条包括平方英尺,卧室数,楼层,日期,翻新年份等等 21 栏。该数据形状为 [21000, 21]

有监督学习除了需要特征 X 还需要标签 y,而 y 通常就是 Numpy 一维数组,无监督学习没有 y。

2.2

自带数据集

Sklearn 里面有很多自带数据集供用户使用。

特例描述

数据集包括 150 条鸢尾花的四个特征 (萼片长/宽和花瓣长/宽) 和三个类别。在盘 Seaborn 时是从 csv 文件读取的,本帖从 Sklearn 里面的 datasets 模块中引入,代码如下:

from sklearn.datasets import load_iris

iris = load_iris()

数据是以「字典」格式存储的,看看 iris 的键有哪些。

iris.keys()

dict_keys(['data', 'target', 

           'target_names', 'DESCR',

           'feature_names', 'filename'])

键里面的名称解释如下:

data:特征值 (数组) target:标签值 (数组) target_names:标签 (列表) DESCR:数据集描述 feature_names:特征 (列表) filename:iris.csv 文件路径

具体感受一下 iris 数据中特征的大小、名称和前五个示例。

n_samples, n_features = iris.data.shape

print((n_samples, n_features))

print(iris.feature_names)

iris.data[0:5]

(150, 4)

['sepal length (cm)', 'sepal width (cm)', 

 'petal length (cm)', 'petal width (cm)']

array([[5.1, 3.5, 1.4, 0.2],

       [4.9, 3. , 1.4, 0.2],

       [4.7, 3.2, 1.3, 0.2],

       [4.6, 3.1, 1.5, 0.2],

       [5. , 3.6, 1.4, 0.2]])

150 个样本,4 个特征,没毛病!再感受一下标签的大小、名称和全部示例。

print(iris.target.shape)

print(iris.target_names)

iris.target

(150,)

['setosa' 'versicolor' 'virginica']

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,

       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,

       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

150 个标签,3 类别 (分别用 0, 1, 2 数值来代表 setosa, versicolor, virginica)。

用 Pandas 的 DataFrame (将 X 和 y 合并) 和 Seaborn 的 pairplot (看每个特征之间的关系) 来用表格和图来展示一下数据集的内容。

Pandas DataFrame

iris_data = pd.DataFrame( iris.data,

columns=iris.feature_names )

iris_data['species'] = iris.target_names[iris.target]

iris_data.head(3).append(iris_data.tail(3))

Seaborn Pairplot

sns.pairplot( iris_data, hue='species', palette='husl' );

正规引入

看完鸢尾花的 iris 数据展示后,现在来看看 Sklearn 三种引入数据形式。

打包好的数据:对于小数据集,用 sklearn.datasets.load_* 分流下载数据:对于大数据集,用 sklearn.datasets.fetch_* 随机创建数据:为了快速展示,用 sklearn.datasets.make_*

上面这个星号 * 是什么意思,指的是具体文件名,敲完

datasets.load_ datasets.fetch_ datasets.make_

点击键盘上的 键就可以看到很多完整的文件名,看下面动图就明白了。

Load 一个数字小数据集 digits?

digits = datasets.load_digits()

digits.keys()

dict_keys(['data', 'target', 'target_names',

           'images', 'DESCR'])

Fetch 一个加州房屋大数据集 california_housing?

california_housing = datasets.fetch_california_housing()

california_housing.keys()

dict_keys(['data', 'target', 

           'feature_names', 'DESCR'])

Make 一个高斯分位数数据集 gaussian_quantile?

gaussian_quantiles = datasets.make_gaussian_quantiles()

type(gaussian_quantiles), len(gaussian_quantiles)

(tuple, 2)

3

核心 API

Sklearn 里万物皆估计器。估计器是个非常抽象的叫法,可把它不严谨的当成一个模型 (用来回归、分类、聚类、降维),或当成一套流程 (预处理、网格最终)。

本节三大 API 其实都是估计器:

估计器 (estimator) 当然是估计器 预测器 (predictor) 是具有预测功能的估计器 转换器 (transformer) 是具有转换功能的估计器

这三句看似废话,其实蕴藏了很多内容。其实我对第 1 点这个估计器的起名不太满意,我觉得应该叫拟合器 (fitter) - 具有拟合功能的估计器。看完这一节你就会明白「拟合器」这种叫法更合理。

3.1

估计器

定义:任何可以基于数据集对一些参数进行估计的对象都被称为估计器。

两个核心点:1. 需要输入数据,2. 可以估计参数。估计器首先被创建,然后被拟合。

创建估计器:需要设置一组超参数,比如

线性回归里超参数 normalize=True K 均值里超参数 n_clusters=3

在创建好的估计器 model 可以直接访问这些超参数,用 . 符号。

model.normalize model.n_clusters

但 model 中有很多超参数,你不可能一开始都知道要设置什么值,没设置的用 Sklearn 会给个合理的默认值,因此新手不用担心。

拟合估计器:需要训练集。在有监督学习中的代码范式为

    model.fit( X_train, y_train )

在无监督学习中的代码范式为

    model.fit( X_train )

拟合之后可以访问 model 里学到的参数,比如线性回归里的特征前的系数 coef_,或 K 均值里聚类标签 labels_。

model.coef_ model.labels_

说了这么多抽象的东西,现在展示有监督学习的「线性回归」和无监督学习的「K 均值」的具体例子。

线性回归

首先从 sklearn 下的 linear_model 中引入 LinearRegression,再创建估计器起名 model,设置超参数 normalize 为 True,指的在每个特征值上做标准化,这样会加速数值运算。

from sklearn.linear_model import LinearRegression

model = LinearRegression(normalize=True)

model

创建完后的估计器会显示所有的超参数,比如我们设置好的 normalize=True,其他没设置的都是去默认值,比如 n_jobs=None 是只用一个核,你可以将其设为 2 就是两核并行,甚至设为 -1 就是电脑里所有核并行。

自己创建一个简单数据集 (没有噪声完全线性) 只为了讲解估计器里面的特征。

x = np.arange(10)

y = 2 * x + 1

plt.plot( x, y, 'o' );

还记得 Sklearn 里模型要求特征 X 是个两维变量么 (样本数×特征数)?但在本例中 X 是一维,因为我们用 np.newaxis 加一个维度,它做的事情就是把 [1, 2, 3] 转成 [[1],[2],[3]]。再把 X 和 y 丢进 fit() 函数来拟合线性模型的参数。

X = x[:, np.newaxis]

model.fit( X, y )

拟合完后的估计器和创建完的样子看起来一样,但是已经用「model.param_」可以访问到学好的参数了,展示如下。

print( model.coef_ )

print( model.intercept_ )

[2.]

1.0

斜率为 2,截距为 1,没毛病。和访问超参数时不一样,注意访问参数要加一个下划线 _。

K 均值

首先从 sklearn 下的 cluster 中引入 KMeans,再创建估计器起名 model,设置超参数 n_cluster 为 3 (为了展示方便而我们知道用的 iris 数据集有 3 类,实际上应该选不同数量的 n_cluster,根据 elbow 图来决定,下帖细讲)。

再者,iris 数据里是有标签 y 的,我们假装没有 y 才能无监督的聚类啊,要不然应该做有监督的分类的。

from sklearn.cluster import KMeans

model = KMeans( n_clusters=3 )

model

创建完后的估计器会显示所有的超参数,比如我们设置好的 n_cluster=3,其他没设置的都是去默认值,比如 max_iter=300 是最多迭代次数为 300,算法不收敛也停了。

还记得 iris 里的特征有四个吗 (萼片长、萼片宽、花瓣长、花瓣宽)?四维特征很难可视化,因此我们只取两个特征 (萼片长、萼片宽) 来做聚类并且可视化结果。注意下面代码 X = iris.data[:,0:2]。

X = iris.data[:,0:2]

model.fit(X)

拟合完后的估计器和创建完的样子看起来一样,但是已经用「model.param_」可以访问到学好的参数了,展示如下。

print( model.cluster_centers_, '\n')

print( model.labels_, '\n' )

print( model.inertia_, '\n')

print( iris.target )

有点乱,解释一下 KMeans 模型这几个参数:

model.cluster_centers_:簇中心。三个簇那么有三个坐标。 model.labels_:聚类后的标签 model.inertia_:所有点到对应的簇中心的距离平方和 (越小越好)

需要强调的是真实标签 iris.label 和聚类标签 model.labels_ 看起来差的很远。类别 0 都一致,但是类别 1 和 2 弄反了,这是因为在 KMeans 算法里标注的类别索引和真实类别索引不一样 (我现在也没找到什么方法能够让它们一致)。

小结

虽然上面以有监督学习的 LinearRegression 和无监督学习的 KMeans 举例,但实际上你可以将它们替换成其他别的模型,比如有监督学习的 LogisticRegression 和无监督学习的 DBSCAN。它们都是「估计器」,因此都有 fit() 方法。使用它们的通用伪代码如下:

# 有监督学习

from sklearn.xxx import SomeModel

# xxx 可以是 linear_model 或 ensemble 等

model = SomeModel( hyperparameter )

model.fit( X, y )

# 无监督学习

from sklearn.xxx import SomeModel

# xxx 可以是 cluster 或 decomposition 等

model = SomeModel( hyperparameter )

model.fit( X )

3.2

预测器

定义:预测器在估计器上做了一个延展,延展出预测的功能。

两个核心点:1. 基于学到的参数预测,2. 预测有很多指标。最常见的就是 predict() 函数:

model.predict(X_test):评估模型在新数据上的表现 model.predict(X_train):确认模型在老数据上的表现

因为要做预测,首先将数据分成 80:20 的训练集 (X_train, y_train) 和测试集 (X_test, y_test),在用从训练集上拟合 fit() 的模型在测试集上预测 predict()。

from sklearn.datasets import load_iris

iris = load_iris()

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test

= train_test_split( iris['data'],

iris['target'],

test_size=0.2 )

print( 'The size of X_train is ', X_train.shape )

print( 'The size of y_train is ', y_train.shape )

print( 'The size of X_test is ', X_test.shape )

print( 'The size of y_test is ', y_test.shape )

The size of X_train is (120, 4)

The size of y_train is (120,)

The size of X_test is (30, 4)

The size of y_test is (30,)

让我们来看个有监督学习的「对率回归」和继续上节无监督学习的「K 均值」的例子。

对率回归

首先从 sklearn 下的 linear_model 中引入 LogisticRegression,再创建估计器起名 model,设置超参数 mutli_class 为 multinomial 因为有三种鸢尾花,是个多分类问题。

接着再训练集上拟合参数,这时估计器 model 里面已经可以访问这些参数了。

predict & predict_proba

对于分类问题,我们不仅想知道预测的类别是什么,有时还想知道预测该类别的信心如何。前者用 predict(),后者用 predict_proba()。

代码如下,在测试集上比较预测标签 y_pred 和真实标签 y_test 发现它们完全吻合,准确率 100% (iris 数据太简单 )。

y_pred = model.predict( X_test )

p_pred = model.predict_proba( X_test )

print( y_test, '\n' )

print( y_pred, '\n' )

print( p_pred )

解释一下 p_pred - 测试集里有 30 个数据,鸢尾花有 3 类,因此 predict_proba() 生成一个 30×3 的数组,每行的概率加起来为 1。

为了验证我们的理解,我们看 Sklearn 是不是把「每行中最大概率值对应的那一类」作为预测结果。

s = ['Class 1 Prob', 'Class 2 Prob', 'Class 3 Prob']

prob_DF = pd.DataFrame( p_pred, columns=s )

prob_DF['Predicted Class'] = y_pred

prob_DF.head()

是的!前三行 Class 1 Prob 最大,预测是第一类;第四行 Class 2 Prob 最大,预测是第二类;第四行 Class 3 Prob 最大,预测是第三类。

score & decision_function

预测器里还有额外的两个函数可以使用。在分类问题中

score() 返回的是分类准确率 decision_function() 返回的是每个样例在每个类下的分数值

print( model.score( X_test, y_test ) )

print( np.sum(y_pred==y_test)/len(y_test) )

1.0

1.0

decision_score = model.decision_function( X_test )

print( decision_score )

为了验证我们的理解,我们看 Sklearn 是不是把「每行中最高得分值对应的那一类」作为预测结果。

s = ['Class 1 Score', 'Class 2 Score', 'Class 3 Score']

decision_DF = pd.DataFrame( decision_score, columns=s )

decision_DF['Predicted Class'] = y_pred

decision_DF.tail()

是的!前两行 Class 3 Score 最大,预测是第三类;后三行 Class 1 Score 最大,预测是第一类。

K 均值

继续上一节的 KMeans 模型,首先用 fit() 训练。

再用 predict() 在测试集上预测出类别 inx_pred,和真实标签 y_test 比对。再次强调,inx_pred 和 y_test 给三个类别的索引定义是不同的。

idx_pred = model.predict( X_test[:,0:2] )

print( index_pred )

print( y_test )

最后画出两幅图 (都是在测试集上),左图是根据聚类预测的标签画出散点图,而右图是根据真实标签画出散点图,对比两幅图看很像,聚类的效果也不错。

KMeans 模型里也有 score() 函数,输出是值是它要优化的目标函数的对数。

model.score( X_test[:,0:2] )

-9.662259042197803

小节

估计器都有 fit() 方法,预测器都有 predict() 和 score() 方法,言外之意不是每个预测器都有 predict_proba() 和 decision_function() 方法,这个在用的时候查查官方文档就清楚了 (比如 RandomForestClassifier 就没有 decision_function() 方法)。

使用它们的通用伪代码如下:

# 有监督学习

from sklearn.xxx import SomeModel

# xxx 可以是 linear_model 或 ensemble 等

model = SomeModel( hyperparameter )

model.fit( X, y )

y_pred = model.predict( X_new )

s = model.score( X_new )

# 无监督学习

from sklearn.xxx import SomeModel

# xxx 可以是 cluster 或 decomposition 等

model = SomeModel( hyperparameter )

model.fit( X )

idx_pred = model.predict( X_new )

s = model.score( X_new )

3.3

转换器

定义:转换器也是一种估计器,两者都带拟合功能,但估计器做完拟合来预测,而转换器做完拟合来转换。

核心点:估计器里 fit + predict,转换器里 fit + transform。

本节介绍两大类转换器

将分类型变量 (categorical) 编码成数值型变量 (numerical) 规范化 (normalize) 或标准化 (standardize) 数值型变量

分类型变量编码

LabelEncoder & OrdinalEncoder

LabelEncoder 和 OrdinalEncoder 都可以将字符转成数字,但是

LabelEncoder  的输入是一维,比如 1d ndarray OrdinalEncoder  的输入是二维,比如 DataFrame

首先给出要编码的列表 enc 和要解码的列表 dec。

enc = ['win','draw','lose','win']

dec = ['draw','draw','win']

从 sklearn 下的 preprocessing 中引入 LabelEncoder,再创建转换器起名 LE,不需要设置任何超参数。 

from sklearn.preprocessing import LabelEncoder

LE = LabelEncoder()

print( LE.fit(enc) )

print( LE.classes_ )

print( LE.transform(dec) )

LabelEncoder()

['draw' 'lose' 'win']

[0 0 2]

上面结果解释如下

第 4 行转换器 fit 之后还是转换器,只不过从数据 enc 上学到了些东西 第 5 行的 LE.classes_ 就是学到的东西之一,系统把 'draw', 'lose', 'win' 分别赋予 0, 1, 2 第 6 行用学到的东西来解码 ['draw','draw','win'] 得到 [0 0 2]

除了LabelEncoder 能编码,OrdinalEncoder 也可以。首先从 sklearn 下的 preprocessing 中引入 OrdinalEncoder,再创建转换器起名 OE,不需要设置任何超参数。 下面结果和上面类似,就不再多解释了。

from sklearn.preprocessing import OrdinalEncoder

OE = OrdinalEncoder()

enc_DF = pd.DataFrame(enc)

dec_DF = pd.DataFrame(dec)

print( OE.fit(enc_DF) )

print( OE.categories_ )

print( OE.transform(dec_DF) )

OrdinalEncoder(categories='auto', dtype=)

[array(['draw', 'lose', 'win'], dtype=object)]

[[0.]

[0.]

[2.]]

上面这种编码的问题是,机器学习算法会认为两个临近的值比两个疏远的值要更相似。显然这样不对 (比如,0 和 1 比 0 和 2 距离更近,难道 draw 和 win 比 draw 和 lose更相似?)。

要解决这个问题,一个常见的方法是给每个分类创建一个二元属性,即独热编码 (one-hot encoding)。如何用它看下段。

OneHotEncoder

独热编码其实就是把一个整数用向量的形式表现。下图就是对数字 0-9 做独热编码。

转换器 OneHotEncoder 可以接受两种类型的输入:

用 LabelEncoder 编码好的一维数组 DataFrame 

一. 用 LabelEncoder 编码好的一维数组 (元素为整数),重塑 (用 reshape(-1,1)) 成二维数组作为 OneHotEncoder 输入。

from sklearn.preprocessing import OneHotEncoder

OHE = OneHotEncoder()

num = LE.fit_transform( enc )

print( num )

OHE_y = OHE.fit_transform( num.reshape(-1,1) )

OHE_y

[2 0 1 2]

<4x3 sparse matrix of type 

''

with 4 stored elements 

in Compressed Sparse Row format>

上面结果解释如下

第 5 行打印出编码结果 [2 0 1 2] 第 6 行将其转成独热形式,输出是一个「稀疏矩阵」形式,因为实操中通常类别很多,因此就一步到位用稀疏矩阵来节省内存

想看该矩阵里具体内容,用 toarray() 函数。

OHE_y.toarray()

array([[0., 0., 1.],

       [1., 0., 0.],

       [0., 1., 0.],

       [0., 0., 1.]])

二. 用 DataFrame作为 OneHotEncoder 输入。

OHE = OneHotEncoder()

OHE.fit_transform( enc_DF ).toarray()

array([[0., 0., 1.],

       [1., 0., 0.],

       [0., 1., 0.],

       [0., 0., 1.]])

和上面结果类似,不解释了。

特征缩放

数据要做的最重要的转换之一是特征缩放 (feature scaling)。当输入的数值的量刚不同时,机器学习算法的性能都不会好。

具体来说,对于某个特征,我们有两种方法:

标准化 (standardization):每个维度的特征减去该特征均值,除以该维度的标准差。 规范化 (normalization):每个维度的特征减去该特征最小值,除以该特征的最大值与最小值之差。

MinMaxScaler

整套转换器「先创建再 fit 在 transform」的流程应该很清楚了。自己读下面代码看看是不是秒懂。唯一需要注意的就是输入 X 要求是两维。

from sklearn.preprocessing import MinMaxScaler

X = np.array( [0, 0.5, 1, 1.5, 2, 100] )

X_scale = MinMaxScaler().fit_transform( X.reshape(-1,1) )

X_scale

array([[0. ],

       [0.005],

       [0.01 ],

       [0.015],

       [0.02 ],

       [1. ]])

StandardScaler

牢记转换器「先创建再 fit 在 transform」的流程就行了。

from sklearn.preprocessing import StandardScaler

X_scale = StandardScaler().fit_transform( X.reshape(-1,1) )

X_scale

array([[-0.47424487],

       [-0.46069502],

       [-0.44714517],

       [-0.43359531],

       [-0.42004546],

       [ 2.23572584]])

警示: fit() 函数只能作用在训练集上,千万不要作用在测试集上,要不然你就犯了数据窥探的错误了!拿标准化举例,用训练集 fit 出来的均值和标准差参数,来对测试集做标准化。

4

高级 API

Sklearn 里核心 API 接口是估计器,那高级 API 接口就是元估计器 (meta-estimator),即由很多基估计器 (base estimator) 组合成的估计器。

    meta_model( base_model )

本节讨论五大元估计器,分别带集成功能的 ensemble,多分类和多标签的 multiclass,多输出的 multioutput,选择模型的 model_selection,和流水线的 pipeline。

ensemble.BaggingClassifier ensemble.VotingClassifier multiclass.OneVsOneClassifier multiclass.OneVsRestClassifier multioutput.MultiOutputClassifier model_selection.GridSearchCV model_selection.RandomizedSearchCV pipeline.Pipeline

在下面五节,我们会用的鸢尾花数据 iris 和数字数据 digits,还有一些自己创建的数据。

4.1

Ensemble 估计器

分类器统计每个子分类器的预测类别数,再用「多数投票」原则得到最终预测。 回归器计算每个子回归器的预测平均值。

最常用的 Ensemble 估计器排列如下:

AdaBoostClassifier: 逐步提升分类器 AdaBoostRegressor: 逐步提升回归器 BaggingClassifier: 装袋分类器 BaggingRegressor: 装袋回归器 GradientBoostingClassifier: 梯度提升分类器 GradientBoostingRegressor: 梯度提升回归器 RandomForestClassifier: 随机森林分类器 RandomForestRegressor: 随机森林回归器 VotingClassifier: 投票分类器 VotingRegressor: 投票回归器

我们用鸢尾花数据 iris,拿

含同质估计器 RandomForestClassifier  含异质估计器 VotingClassifier 

来举例。首先将数据分成 80:20 的训练集和测试集,并引入 metrics 来计算各种性能指标。

from sklearn.datasets import load_iris

iris = load_iris()

from sklearn.model_selection import train_test_split

from sklearn import metrics

X_train, X_test, y_train, y_test

= train_test_split( iris['data'],

iris['target'],

                    test_size=0.2 )

RandomForestClassifier

RandomForestClassifier  通过控制 n_estimators 超参数来决定基估计器的个数,本例是 4 棵决策树 (森林由树组成);此外每棵树的最大树深为 5 (max_depth=5)。

from sklearn.ensemble import RandomForestClassifier

RF = RandomForestClassifier( n_estimators=4, max_depth=5 )

RF.fit( X_train, y_train )

估计器有 fit(),元估计器当然也有 fit()。在估计器那一套又可以照搬到元估计器 (起名 RF) 上了。看看 RF 里包含的估计器个数和其本身。

print( RF.n_estimators )

RF.estimators_

拟合 RF 完再做预测,用 metrics  里面的 accuracy_score 来计算准确率。训练准确率 98.33%,测试准确率 100%。

print ( "RF - Accuracy (Train): %.4g" %

metrics.accuracy_score(y_train, RF.predict(X_train)) )

print ( "RF - Accuracy (Test): %.4g" %

metrics.accuracy_score(y_test, RF.predict(X_test)) )

RF - Accuracy (Train): 0.9833

RF - Accuracy (Test): 1

VotingClassifier

和随机森林由同质分类器「决策树」不同,投票分类器由若干个异质分类器组成。下例用 VotingClassifier 建立个含有对率回归 (LR)、随机森林 (RF) 和高斯朴素贝叶斯 (GNB) 三个分类器的集成模型。

RandomForestClassifier  的基分类器只能是决策树,因此只用通过控制 n_estimators 超参数来决定树的个数,而 VotingClassifier 的基分类器要实实在在的输入其本身。

看看 Ensemble 里包含的估计器个数和其本身。

print( len(Ensemble.estimators_) )

Ensemble.estimators_

比如元估计器和它三个组成元素的表现。还是集成后的 Ensemble 表现最好。

LR.fit( X_train, y_train )

RF.fit( X_train, y_train )

GNB.fit( X_train, y_train )

LR - Accuracy (Train): 0.975

RF - Accuracy (Train): 0.9833

GNB - Accuracy (Train): 0.95

Ensemble - Accuracy (Train): 0.9833

LR - Accuracy (Test): 1

RF - Accuracy (Test): 1

GNB - Accuracy (Test): 1

Ensemble - Accuracy (Test): 1

4.2

Multiclass 估计器

sklearn.multiclass 可以处理多类别 (multi-class) 的多标签 (multi-label) 的分类问题。

从小节 4.2 到 4.4,我们都会使用数字数据集 digits。首先将数据分成 80:20 的训练集和测试集。

from sklearn.datasets import load_digits

digits = load_digits()

digits.keys()

dict_keys(['data', 'target', 'target_names', 

           'images', 'DESCR'])

X_train, X_test, y_train, y_test

= train_test_split( digits['data'],

digits['target'],

                    test_size=0.2 )

print( 'The size of X_train is ', X_train.shape )

print( 'The size of y_train is ', y_train.shape )

print( 'The size of X_test is ', X_test.shape )

print( 'The size of y_test is ', y_test.shape )

The size of X_train is (1437, 64)

The size of y_train is (1437,)

The size of X_test is (360, 64)

The size of y_test is (360,)

训练集和测试集分别有 1437 和 360 张图像。每张照片是包含 8×8 的像素,将其打平 (flatten) 把 2 维的 8×8 重塑成 1 维的 64。

看看训练集中前 100 张图片和对应的标签 (左下角蓝色小字)。像素很低 (为了我们跑模型快些),但基本上还是能看清。

多类别分类

手写数字有 0-9 十类,但手头上只有两分类估计器 (比如像支撑向量机) 怎么用呢?我们可以采取下面三种常见策略:

一对一 (One vs One, OvO):一个分类器用来处理数字 0 和数字 1,一个用来处理数字 0 和数字 2,一个用来处理数字 1 和 2,以此类推。N 个类需要 N(N-1)/2 个分类器。 一对其他 (One vs All, OvA):训练 10 个二分类器,每一个对应一个数字,第一个分类 1 和「非1」,第二个分类 2 和「非2」,以此类推。N 个类需要 N 个分类器。

OneVsOneClassifier

考虑一个具体天气多分类问题,天气可以是晴天、阴天和雨天,在 OvO 中,三个分类器为 f1 , f2 和 f3 。

f1 负责分类三角形和正方形 f2 负责分类三角形和圆形 f3 负责分类圆形和正方形

结果如下

f1 预测 ▲ f2 预测 ▲  f3 预测 ●

根据多数原则得到的结合预测为 ●,如下图所示。

回到数字分类问题上,代码如下:

10 类 45 个 OvO 分类器,没错,10*9/2 = 45。

print( len(ovo_lr.estimators_) )

ovo_lr.estimators_

训练集分类全对,测试集准确率 98%。

OneVsRestClassifier

在 OvA 中,把数据分成“某个”和“其他”

图一,某个 = 三角形,其他 = 正方形和圆形 图二,某个 = 正方形,其他 = 三角形和圆形 图三,某个 = 圆形,其他 = 三角形和正方形

三分类分解成三个二分类,对应的分类器为 f1 , f2 和 f3 。

f1 预测负类,即预测 ● 和 ◼ f2 预测负类,即预测 ▲ 和 ● f3 预测正类,即预测 ●

三个分类器都预测了 ●,根据多数原则得到的预测是 ●。

回到数字分类问题上,代码如下:

10 类 45 个 OvA 分类器,没错。

print( len(ova_lr.estimators_) )

ova_lr.estimators_

训练集准确率几乎 100%,测试集准确率 96%。

多标签分类

到目前为止,所有的样例都总是被分配到仅一个类。有些情况下,你也许想让分类器给一个样例输出多个类别。在无人驾驶的应用中,在下图识别出有车和指示牌,没有交通灯和人。

我们不打算深入物体识别。先看一个简单点的例子,仅仅是为了阐明「多标签分类」的原理。在手写数字的例子上,我们特意为每个数字设计了多标签:

标签 1 - 奇数、偶数 标签 2 - 小于等于 4,大于 4

再建立多标签 y_train_multilabel,代码如下 (OneVsRestClassifier 也可以用来做多标签分类):

from sklearn.multiclass import OneVsRestClassifier

y_train_multilabel

= np.c_[ y_train%2==0, y_train<=4 ]

print(y_train_multilabel)

[[ True True]

 [False False]

 [False False]

 ...

 [False False]

 [False False]

 [False False]]

看下图训练集第 1 和 2 个图片是数字 4 和 5,对应上面两标签当然是

[True True]:4 是偶数,小于等于 4 [False False]:5 不是偶数,大于 4

训练模型,只不过这时用的是 y_train_multilabel。

有两个估计器,每个对应一个标签。

print( len(ova_ml.estimators_) )

ova_ml.estimators_

展示一下测试集上 100 张图片。

第一张图片是数字 2,它是偶数 (标签 1 为 true),小于等于 4 (标签 2 为 true)。

print( y_test[:1] )

print( ova_ml.predict(X_test[:1,:]) )

[2]

[[1 1]]

4.3

Multioutput 估计器

sklearn.multioutput 可以处理多输出 (multi-output) 的分类问题。

多输出分类是多标签分类的泛化,在这里每一个标签可以是多类别 (大于两个类别) 的。一个例子就是预测图片每一个像素(标签) 的像素值是多少 (从 0 到 255 的 256 个类别)。

Multioutput 估计器有两个:

MultiOutputRegressor: 多输出回归    MultiOutputClassifier: 多输出分类

本节只关注多输出分类。

MultiOutputClassifier

首先引入 MultiOutputClassifier 和 RandomForestClassifier。你看,这两个都是元估计器,因此在 Sklearn 里面估计器可以随意组合。

from sklearn.multioutput import MultiOutputClassifier

from sklearn.ensemble import RandomForestClassifier

在手写数字的例子上,我们也为特意每个数字设计了多标签而且每个标签的类别都大于二。

标签 1 - 小于等于 4,4 和 7 之间,大于等于 7 (三类) 标签 2 - 数字本身 (十类)

代码如下:

用含有 100 棵决策树的随机森林来解决这个多输入分类问题。

看看这个模型在测试集前五张照片上的预测。

MO.predict( X_test[:5,:] )

array([[0, 2],

       [0, 2],

       [0, 0],

       [2, 9],

       [1, 5]])

这个 ndarray 第一列是标签 1 的类别,第二列是标签 2 的类别。预测结果是这五张照片分别显示数字 2, 2, 0, 9, 5 (标签 2),它们前三个数 2, 2, 0 都小于等于 4 (标签 1 第一类),第四个数 9 大于等于 7 (标签 1 第二类),而第五个数 5 在 4 和 7 之间 (标签 1 第三类)。

再看看真实标签。

y_test_1st = y_test.copy()

y_test_1st[ y_test<=4 ] = 0

y_test_1st[ np.logical_and(y_test>4, y_test<7) ] = 1

y_test_1st[ y_test>=7 ] = 2

y_test_multioutput

= np.c_[ y_test_1st, y_test ]

y_test_multioutput[:5]

array([[0, 2],

       [0, 2],

       [0, 0],

       [2, 9],

       [1, 5]])

相当好!

4.4

Model Selection 估计器

模型选择 (Model Selction) 在机器学习非常重要,它主要用于评估模型表现,常见的 Model Selection 估计器有以下几个:

cross_validate: 评估交叉验证的表现。 learning_curve: 建立学习曲线。    GridSearchCV: 用交叉验证从网格中一组超参数搜索出最佳超参数。 RandomizedSearchCV: 用交叉验证从一组随机超参数搜索出最佳超参数。

本小节关注调节超参数的两个估计器,即上面列出的最后两个。它们都要用到交叉验证,先来了解一下这个知识点。

交叉验证

K-折交叉验证集 (K-fold cross validation set),就是把整个数据集平均但随机分成 K 份,每份大概包含 m/K 个数据 (m 是总数据数)。

在这 K 份,每次选 1 份作为训练集在拟合参数 wλ,把参数用在剩下 K-1 份验证集上计算误差。由于遍历了这 K 份数据,因此该操作称为交叉验证。

如何通过选择交叉验证误差来选择模型描述如下。

接下来我们来看这两个调参的估计器,网格追踪和随机追踪。

网格追踪:参数 1 在 [1, 10, 100, 1000] 中取值,参数 2 在 [0.01, 0.1, 1 10] 中取值,注意并不是等间距取值。模型在所有 16 个组合跑,选取一对对应最小交叉验证误差的参数。

随机追踪:根据指定分布随机搜索,可以选择独立于参数个数,比如 log(参数 1) 服从 0 到 3 的均匀分布, log(参数 2) 服从 -2 到 1 的均匀分布。此外,会设定一个预算参数。

原理讲清楚了,看代码吧。

解释一下代码:

前 10 行就是引入各种包,并准备好 X 和 y,创建一个含 20 个决策树的随机森林模型,那么它有超参数最大树深、最多特征数、最小可分裂样本数、和分裂标准。

第 12-27 行是运行随机追踪,关键点是建立了一个参数分布 (param_dist),而且还预先设定了个迭代组数 n_iter_search=20。

第 22-42 行是运行网格追踪,关键点是建立了一个参数网格 (param_grid)。

解释一下运行结果:

第一行输出每种追踪法运行的多少次和花的时间。 第二行输出最佳超参数的组合。 第三行输出最高得分。

由上面结果可知,随机追踪比网格追踪用更短时间内找到一组超参数,获得了更高的得分。

4.5

Pipeline 估计器

Pipeline 估计器又叫流水线,把各种估计器串联 (Pipeline) 或并联 (FeatureUnion) 的方式组成一条龙服务。用好了它真的能大大提高效率。

Pipeline

Pipeline 将若干个估计器按顺序连在一起,比如

    特征提取 -> 降维 -> 拟合 -> 预测

在整个 Pipeline 中,它的属性永远和最后一个估计器属性一样

如果最后一个估计器是预测器,那么 Pipeline 是预测器 如果最后一个估计器是转换器,那么 Pipeline 是转换器

下面用一个简单例子来说明如果用 Pipeline 来做「先填补缺失值-再标准化」这两步的。先生成含缺失值 NaN 的数据 X。

首先引入 Pipeline,再引入

处理缺失值的转换器 SimpleImputer 做规划化的转换器 MinMaxScaler

第 4-7 行创建了流水线,范式非常简单,就在 Pipeline() 里一个输入「含名称的估计器的列表」。SimpleImputer 起名叫 impute,MinMaxScaler起名叫 normalize。

由于最后一个估计器是转换器,因此 pipe 也是个转换器。写好了就可以那它来做「先填补缺失值-再标准化」的重复工作了。

看看运行结果,值都被填满了,而且两列也被标准化了。

来验证上面流水线的参数,我们可以按顺序来运行这两个转换器,结果是一样的。

FeatureUnion

如果我们想在一个节点同时运行几个估计器,我们可用 FeatureUnion。下例首先建立一个 DataFrame,

前两列智力 IQ 和脾气 temper 都是分类型变量 后两列收入 income 和身高 height 都是数值型变量 每列中都有缺失值

我们现在按下列步骤来清洗数据。

对分类型变量:获取 -> 中位数填充 -> 独热编码 对数值型变量:获取 -> 均值填充 -> 标准化

上面两步是平行进行的。

首先我们自己定义一个从 DataFrame 里面获取每列的类,起名叫 DataFrameSelector。

知识点

代码不难,主要就是 transform 函数中,将输入的 DataFrame X 根据属性名称来获取其值。

接下来建立一个流水线 full_pipe,它并联着两个流水线

categorical_pipe 处理分类型变量

DataFrameSelector 用来获取 SimpleImputer 用出现最多的值来填充 None OneHotEncoder 来编码返回非稀疏矩阵

numeric_pipe 处理数值型变量

DataFrameSelector 用来获取 SimpleImputer 用均值来填充 NaN normalize 来规范化数值

下面代码非常漂亮。

将结果打印出来,齐活!

X_proc = full_pipe.fit_transform( X )

print( X_proc )

[[1.         0.12 0. 1. 0. 0. 1. ]

 [0.77777778 0.72 1. 0. 0. 1. 0. ]

 [0.55555556 0.48 1. 0. 0. 0. 1. ]

 [0.         0.52 0. 0. 1. 1. 0. ]

 [0.04444444 1.   0. 1. 0. 1. 0. ]

 [0.11111111 0.   1. 0. 0. 1. 0. ]

 [0.08888889 0.92 0. 1. 0. 1. 0. ]

 [0.34166667 0.52 0. 1. 0. 1. 0. ]

 [0.15555556 0.4  0. 1. 0. 1. 0. ]]

5

总结

Sklearn 里面设计 API 遵循五大原则。

一致性

所有对象的接口一致且简单,在「估计器」中

创建:model = Constructor(hyperparam) 拟参:

有监督学习 - model.fit(X_train, y_train) 无监督学习 - model.fit(X_train)

在「预测器」中

有监督学习里预测标签:y_pred = model.predict(X_test) 无监督学习里识别模式:idx_pred = model.predict( Xtest)

在「转换器」中

创建:trm = Constructor(hyperparam) 获参:trm.fit(X_train) 转换:X_trm = trm.transform(X_train)

可检验

所有估计器里设置的超参数和学到的参数都可以通过实例的变量直接访问来检验其值,区别是超参数的名称最后没有下划线 _,而参数的名称最后有下划线 _。举例如下:

通例:model.hyperparameter 特例:SVC.kernel 通例:model.parameter_ 特例:SVC.support_vectors_

标准类

Sklearn 模型接受的数据集的格式只能是「Numpy 数组」和「Scipy 稀疏矩阵」。超参数的格式只能是「字符」和「数值」。

不接受其他的类!

可组成

模块都能重复「连在一起」或「并在一起」使用,比如两种形式流水线 (pipeline)

任意转换器序列  任意转换器序列 + 估计器

有默认

Sklearn 给大多超参数提供了合理的默认值,大大降低了建模的难度。

结合本帖讲的总结一套机器学习的初级框架:

确定任务:是「有监督」的分类或回归?还是「无监督」的聚类或降维?确定好后基本就能知道用 Sklearn 里哪些模型了。

数据预处理:这步最繁琐,要处理缺失值、异常值;要编码分类型变量;要正规化或标准化数值型变量,等等。但是有了 Pipeline 神器一切变得简单高效。

训练和评估:这步最简单,训练用估计器 fit() 先拟合,评估用预测器 predict() 来评估。

选择模型:启动 Model Selection 估计器里的 GridSearchCV 和 RandomizedSearchCV,选择得分最高的那组超参数 (即模型)。

本帖讲的东西有点抽象,但最核心的东西就是弄懂估计器以及元估计器的原理。剩下的就是 1) 了解各种模型,2) 知道模型中每个参数的含义,3) 查阅 Sklearn 官方文档。非深度的机器学习不像深度学习有那么多调参技巧 (tuning trick),按照上面那套框架足够了。

欢迎关注小编的公众号,一起努力学习和进步:

优惠劵

机器学习算法那些事

关注

关注

1078

点赞

5724

收藏

觉得还不错?

一键收藏

知道了

62

评论

非常详细的sklearn介绍

0引言Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplot...

复制链接

扫一扫

专栏目录

python安装sklearn库

04-11

要想安装sklearn库,有两个步骤:

1、升级pip,如果没有升级pip直接安装会报错;

2、再使用升级好pip后就可以直接使用pip命令进行安装,主义要sklearn库的全称是scikit-learn。

升级pip:在win+R下输入cmd进入控制界面输入代码 python -m pip install --user --upgrade pip

将升级好pip后输入代码:pip install scikit-learn

个人感觉最简单的安装方法。

Python基础教程:sklearn机器学习入门

Rocky006的博客

07-23

1228

sklearn(全名为scikit-learn)是一个建立在NumPy、SciPy和matplotlib等科学计算库的基础上,用于机器学习的Python开源库。它提供了丰富的工具和函数,用于处理各种机器学习任务,包括分类、回归、聚类、降维、模型选择、预处理等。Scikit-Learn支持多种常见的机器学习算法,如线性回归、逻辑回归、决策树、支持向量机、随机森林、K近邻、聚类算法等。此外,它还提供了各种评估指标和模型选择技术,如交叉验证、特征选择、参数调优等,以帮助用户选择和优化合适的模型。

62 条评论

您还未登录,请先

登录

后发表或查看评论

机器学习实战 | SKLearn入门与简单应用案例

ShowMeAI研究中心

03-21

1万+

本篇内容介绍了SKLearn的核心板块,并通过SKLearn自带的数据集,讲解一个典型应用案例。

机器学习神器:Sklearn详解

最新发布

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎

01-23

1102

什么是机器学习?字面上来讲就是 (人用) 计算机来学习。谈起机器学习就一定要提起汤姆米切尔 (Tom M.Mitchell),就像谈起音乐就会提起贝多芬,谈起篮球就会提起迈克尔乔丹,谈起电影就会提起莱昂纳多迪卡普里奥。

机器学习---sklearn

weixin_44838881的博客

05-21

4万+

1.Sklearn简介

sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具,Sklea是处理机器学习 (有监督学习和无监督学习) 的包。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,其主要集成了数据预处理、数据特征选择,sklearn有六个任务模块和一个数据引入模块:

有监督学习的分类任务

有监督学习的回归任务

无监督学习的聚类任务

无监督学习的降维任务

数据预处理任务

模型选择任务

数据引入

具体流程如下:

下载 skl.

python中sklearn的pipeline模块实例详解

09-16

主要介绍了python中sklearn的pipeline模块的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Python——sklearn库的安装

热门推荐

GeekZW的博客

03-21

10万+

Python——sklearn库的安装

做个笔记,时间久了,都忘了sklearn库的标准名字——scikit-learn。所以,不要用

pip install sklearn

应该是

pip install scikit-learn

真被自己蠢哭了。

说明:有的低版本的sklearn库没有"accuracy",版本问题,更新一下包就可以哈。

...

机器学习实战 | SKLearn最全应用指南

xuhss_com的博客

03-22

1504

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

作者:韩信子@ShowMeAI

教程地址:http://www.showmeai.tech/tutorials/41

本文地址:http://www.showmeai.tech/article-detail/203

声明:版权所有,转载请联系平台与作者并注明出处

收藏Show

Python 机器学习4:sklearn 分类算法

Amzmks的博客

07-21

6865

1. 数据集划分

sklearn为我们提供了datasets模块,其中包括很多经典的数据集:

from sklearn import datasets

这里我们查看鸢尾花分类的数据集,其中包括特征值和目标值。

from sklearn.datasets import load_iris

li = load_iris()

print("获取特征值")

print(li.data)

print("目标值")

print(li.target)

print(li.DESCR)

将数据集划分为训练集和

Python机器学习库——Sklearn

韩明宇

05-11

6267

目录

简介

常规使用模式

sklearn中的数据展示

sklearn model中常用属性与功能

数据标准化

交叉验证

过拟合问题

保存模型

小结

简介

Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfi...

如何了解Ski-learn提供的连续型数据集构造——以波士顿房价数据集为例

f18896984569的博客

11-08

1055

两种方法,实现波士顿房价数据集的一览无余

sklearn学习02.ipynb

06-02

sklearn学习02.ipynb

python使用sklearn实现决策树的方法示例

09-18

主要介绍了python使用sklearn实现决策树的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

sklearn教程

08-10

sklearn用户使用手册,用户手册它不仅仅是一篇用户手册,还集成了很多贴心的机器人生小感悟。。

ML神器:sklearn的快速使用及入门

09-19

主要介绍了ML神器:sklearn的快速使用及入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

python运用sklearn实现KNN分类算法

09-18

主要为大家详细介绍了python运用sklearn实现KNN分类算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

sklearn 笔记二

m0_65523585的博客

10-14

1786

课堂笔记

sklearn聚类算法实现

weixin_40210397的博客

07-22

1万+

sklearn聚类算法实现

主要通过调用python中sklearn库中的函数来实现聚类算法,主要包括:K-MEANS、近邻传播(AffinityPropagation)、均值偏移(MeanShift)、谱聚类(SpectralCluster)、层次聚类(AgglomerativeClustering)、密度噪声(DBSCAN)、平衡迭代层次聚类(Birch)、高斯混合(GMM)、双向聚类(SpectralBiclustering)。

1、生成数据集

通过sklearn中的make_blobs函数主要来生成

[sklearn]决策树、随机森林、隐马尔可夫模型

You and Me

04-19

5962

决策树决策树(Decision Tree)是一种用于处理分类和回归问题的无监督学习算法。如下图所示为某女青年在某相亲网站的相亲决策图。这幅图描述的都是一个非常典型的决策树模型。通过对其相亲决策的分析,假设其相亲信息如下所示:该女青年相亲决策主要考虑到因素有年龄,身高,年收入,学历。同事由该女青年的相亲决策图可以看到,相亲决策树以年龄与35岁相比作为树根。但是其他的数据项也能做树根。因此选择合适的数...

详细介绍一下sklearn

09-11

sklearn,全称为Scikit-learn,是一个用于机器学习和数据挖掘的Python库。它建立在NumPy、SciPy和matplotlib等科学计算库的基础上,提供了一整套常用的机器学习算法和工具,以便于用户快速构建和部署机器学习模型。 ...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

机器学习算法那些事

CSDN认证博客专家

CSDN认证企业博客

码龄6年

暂无认证

61

原创

2万+

周排名

81万+

总排名

106万+

访问

等级

8404

积分

1431

粉丝

1706

获赞

199

评论

1万+

收藏

私信

关注

热门文章

非常详细的sklearn介绍

158519

偏度与峰度的正态性分布判断

30192

数据科学 | 如何解释线性回归的R方

27590

印度天才数学家拉马努金留下的 3000 + 神奇公式,交给 AI 来「证明」!

17763

浅谈先验分布和后验分布

14443

分类专栏

python学习

5篇

矩阵理论

5篇

Linux学习

3篇

机器学习算法

21篇

随机过程

AndrewNg老师公开课视频总结

5篇

最新评论

非常详细的sklearn介绍

xiaopengyouaiGIS:

非常好非常好,小白也能看懂

用OpenCV和深度学习进行年龄识别

别看了,别看了:

下载里面的代码在哪里呢

非常详细的sklearn介绍

泡椒小邓头:

感谢感谢,真的很受益

非常详细的sklearn介绍

无sang:

感谢感谢,真的讲的很好,虽然偶尔有一点点错别字,真的很棒!

FCN、Unet、Unet++:医学图像分割网络一览

蛙哈:

写的很好,我有收获

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

2021-07-02

10部顶级数学纪录片

上海有哪些牛逼的互联网公司?

2021年264篇

2020年477篇

2019年124篇

2018年29篇

目录

目录

分类专栏

python学习

5篇

矩阵理论

5篇

Linux学习

3篇

机器学习算法

21篇

随机过程

AndrewNg老师公开课视频总结

5篇

目录

评论 62

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

机器学习入门之sklearn介绍 - 知乎

机器学习入门之sklearn介绍 - 知乎首发于大数据分析·人工智能切换模式写文章登录/注册机器学习入门之sklearn介绍CDA数据分析师SKlearn简介scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,并且涵盖了几乎所有主流机器学习算法。SKlearn官网:scikit-learn: machine learning in Python 在工程应用中,用python手写代码来从头实现一个算法的可能性非常低,这样不仅耗时耗力,还不一定能够写出构架清晰,稳定性强的模型。更多情况下,是分析采集到的数据,根据数据特征选择适合的算法,在工具包中调用算法,调整算法的参数,获取需要的信息,从而实现算法效率和效果之间的平衡。而sklearn,正是这样一个可以帮助我们高效实现算法应用的工具包。​sklearn有一个完整而丰富的官网,里面讲解了基于sklearn对所有算法的实现和简单应用。常用模块sklearn中常用的模块有分类、回归、聚类、降维、模型选择、预处理。分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机)、nearest neighbors(最近邻)、random forest(随机森林),常见的应用有:垃圾邮件识别、图像识别。回归:预测与对象相关联的连续值属性,常见的算法有:SVR(支持向量机)、 ridge regression(岭回归)、Lasso,常见的应用有:药物反应,预测股价。聚类:将相似对象自动分组,常用的算法有:k-Means、 spectral clustering、mean-shift,常见的应用有:客户细分,分组实验结果。降维:减少要考虑的随机变量的数量,常见的算法有:PCA(主成分分析)、feature selection(特征选择)、non-negative matrix factorization(非负矩阵分解),常见的应用有:可视化,提高效率。模型选择:比较,验证,选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)。它的目标是通过参数调整提高精度。预处理:特征提取和归一化,常用的模块有:preprocessing,feature extraction,常见的应用有:把输入数据(如文本)转换为机器学习算法可用的数据。安装SKlearn安装最新版本Scikit-learn需要:•Python(> = 2.7或> = 3.4),•NumPy(> = 1.8.2),•SciPy(> = 0.13.3)。【注意】Scikit-learn 0.20是支持Python 2.7和Python 3.4的最后一个版本。Scikit-learn 0.21将需要Python 3.5或更高版本。如果你已经安装了numpy和scipy,那么安装scikit-learn的最简单方法就是使用 pip或者candapip install -U scikit-learnconda install scikit-learn如果你尚未安装NumPy或SciPy,你也可以使用conda或pip安装它们。使用pip时,请确保使用binary wheels,并且不会从源头重新编译NumPy和SciPy,这可能在使用特定配置的操作系统和硬件(例如Raspberry Pi上的Linux)时发生。从源代码构建numpy和scipy可能很复杂(特别是在Windows上),需要仔细配置以确保它们与线性代数例程的优化实现相关联。为了方便,我们可以使用如下所述的第三方发行版本。发行版本如果你还没有numpy和scipy的python安装,我们建议你通过包管理器或通过python bundle安装。它们带有numpy,scipy,scikit-learn,matplotlib以及许多其他有用的科学和数据处理库。可用选项包括:Canopy和Anaconda适用于所有支持的平台除了用于Windows,Mac OSX和Linux的大量科学python库之外,Canopy和Anaconda都提供了最新版本的scikit-learn。Anaconda提供scikit-learn作为其免费发行的一部分。【注意】PIP和conda命令不要混用!!!要升级或卸载scikit-learn安装了python或者conda你不应该使用PIP命令。升级scikit-learn:conda update scikit-learn卸载scikit-learn:conda remove scikit-learn使用pip install -U scikit-learn安装或者使用pip uninstall scikit-learn卸载可能都没有办法更改有conda命令安装的sklearn。算法选择sklearn 实现了很多算法,面对这么多的算法,如何去选择呢?其实选择的主要考虑的就是需要解决的问题以及数据量的大小。sklearn官方提供了一个选择算法的引导图。这里提供翻译好的中文版本,供大家参考:相关阅读随机森林在乳腺癌数据上的调参机器学习中调参的基本思想Data Analyst:SKlearn中分类决策树的重要参数详解决策树在sklearn中的实现机器学习之决策树在sklearn中的实现更多内容可移步:编辑于 2019-03-12 14:58机器学习sklearn​赞同 63​​6 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录大数据分析·人工智能分享行业干货,分享实时热点,还有生活的点点

sklearn库主要模块功能简介 - 知乎

sklearn库主要模块功能简介 - 知乎首发于机器学习切换模式写文章登录/注册sklearn库主要模块功能简介小数志导读:作为一名数据分析师,当我初次接触数据分析三剑客(numpy、pandas、matplotlib)时,感觉每个库的功能都很多很杂,所以在差不多理清了各模块功能后便相继推出了各自教程;后来,当接触了机器学习库sklearn之后,才发现三剑客也不外如是,相比sklearn简直是小巫见大巫;再后来,又开始了pyspark的学习之旅,发现无论是模块体积还是功能细分,pyspark又都完爆sklearn;最近,逐渐入坑深度学习(TensorFlow框架),终于意识到python数据科学库没有最大,只有更大……鉴于机器学习本身理论性很强,加之sklearn库功能强大API众多,自然不是总结一份教程所能涵盖的。所以这一次,仅对其中的各子模块进行梳理和介绍,以期通过本文能对sklearn迅速建立宏观框架。01 sklearn简介sklearn,全称scikit-learn,是python中的机器学习库,建立在numpy、scipy、matplotlib等数据科学包的基础之上,涵盖了机器学习中的样例数据、数据预处理、模型验证、特征选择、分类、回归、聚类、降维等几乎所有环节,功能十分强大,目前sklearn版本是0.23。与深度学习库存在pytorch、TensorFlow等多种框架可选不同,sklearn是python中传统机器学习的首选库,不存在其他竞争者。本文将分别围绕下图中各大子模块进行分别介绍,不会面面俱到、但求提纲挈领。02 样例数据集sklearn为初学者提供了一些经典数据集,通过这些数据集可快速搭建机器学习任务、对比模型性能。数据集主要围绕分类和回归两类经典任务,对于不同需求,常用数据集简介如下:load_breast_cancer:乳腺癌数据集,特征为连续数值变量,标签为0或1的二分类任务load_iris:经典鸢尾花数据集,特征为连续数值变量,标签为0/1/2的三分类任务,且各类样本数量均衡,均为50个load_wine:红酒数据集,与鸢尾花数据集特点类似,也是用于连续特征的3分类任务,不同之处在于各类样本数量轻微不均衡load_digits:小型手写数字数据集(之所以称为小型,是因为还有大型的手写数字数据集mnist),包含0-9共10种标签,各类样本均衡,与前面3个数据集最大不同在于特征也是离散数值0—16之间,例如在进行多项式朴素贝叶斯模型、ID3树模型时,可用该数据集load_boston:波士顿房价数据集,连续特征拟合房价,适用于回归任务值得指出,sklearn除了load系列经典数据集外,还支持自定义数据集make系列和下载数据集fetch系列(load系列为安装sklearn库时自带,而fetch则需额外下载),这为更多的学习任务场景提供了便利。03 数据预处理sklearn中的各模型均有规范的数据输入输出格式,一般以np.array和pd.dataframe为标准格式,所以一些字符串的离散标签是不能直接用于模型训练的;同时为了加快模型训练速度和保证训练精度,往往还需对数据进行预处理,例如在以距离作为度量进行训练时则必须考虑去量纲化的问题。为此,sklearn提供了一些常用的数据预处理功能,常用的包括:MinMaxScaler:归一化去量纲处理,适用于数据有明显的上下限,不会存在严重的异常值,例如考试得分0-100之间的数据可首选归一化处理StandardScaler:标准化去量纲处理,适用于可能存在极大或极小的异常值,此时用MinMaxScaler时,可能因单个异常点而将其他数值变换的过于集中,而用标准正态分布去量纲则可有效避免这一问题Binarizer:二值化处理,适用于将连续变量离散化OneHotEncoder:独热编码,一种经典的编码方式,适用于离散标签间不存在明确的大小相对关系时。例如对于民族特征进行编码时,若将其编码为0-55的数值,则对于以距离作为度量的模型则意味着民族之间存在"大小"和"远近"关系,而用独热编码则将每个民族转换为一个由1个"1"和55个"0"组成的向量。弊端就是当分类标签过多时,容易带来维度灾难,而特征又过于稀疏Ordinary:数值编码,适用于某些标签编码为数值后不影响模型理解和训练时。例如,当民族为待分类标签时,则可将其简单编码为0-55之间的数字04 特征选择机器学习中有句经典的台词是:数据和特征决定学习上限,模型和算法只是逼近这个上限,可见特征工程在机器学习中的重要性。一般而言,传统机器学习中的特征工程主要包括两方面需求:特征维度过多时,为加快模型训练速度,进行特征选择即过滤掉不重要的特征;特征较少或模型训练性能不好时,可通过对问题的理解尝试构建特征提升维度。这里简单介绍几种特征选择的方式:from_model:顾名思义,从模型选择特征,这是因为很多模型在训练后都提供了特征的重要性结果feature_importance,据此可作为特征选择的依据VarianceThreshold:根据方差阈值做特征选择,实际上当某一特征的方差越大时意味着该特征越能带来更好的分类区分度,否则由于特征取值比较集中,很难对应不同的分类效果SelectKBest:指定K个特征选择结果,具体也需依赖选择的标准05 模型选择模型选择是机器学习中的重要环节,涉及到的操作包括数据集切分、参数调整和验证等。对应常用函数包括:train_test_split:常用操作之一,切分数据集和测试集,可设置切分比例cross_val_score:交叉验证,默认K=5折,相当于把数据集平均切分为5份,并逐一选择其中一份作为测试集、其余作为训练集进行训练及评分,最后返回K个评分GridSearchCV:调参常用方法,通过字典类型设置一组候选参数,并制定度量标准,最后返回评分最高的参数06 度量指标不同的度量指标可以学到不同的最优模型。对于不同类型任务,sklearn提供了多种度量指标,包括:分类任务:准确率,所有样本中分类正确样本所占比例;精准率和召回率,一对相互矛盾的指标,适用于分类样本数量不均衡时,此时为了保证既定目标,可只选其中一个指标;调和平均数F1,相当于兼顾了精准率和召回率两项指标回归任务:常用的包括MSE、MAE,但R2_score实质上是更为公允和直观的评价指标,其意义是R2_Score = MSE / VAR,即预测分类和实际分类的均方差与实际分类方差的比值聚类任务:聚类任务属于无监督学习,所以根据是否有先验标签信息,聚类结果的度量指标包括轮廓系数(无需先验标签,用组内距离与组外最近距离的比值度量)、调整兰德指数(基于真实分簇标签和聚类标签计算)07 降维降维也属于无监督学习的一种,当特征维度过多时可通过矩阵的QR分解实现在尽可能保留原有信息的情况下降低维度,一般用于图像数据预处理,且降维后的特征与原特征没有直接联系,使得模型训练不再具有可解释性。08 聚类聚类是一种典型的无监督学习任务,但也是实际应用中较为常见的需求。在不提供样本真实标签的情况下,基于某些特征对样本进行物以类聚。根据聚类的原理,主要包括三种:基于距离聚类,典型的就是K均值聚类,通过不断迭代和重新寻找最小距离,对所有样本划分为K个簇,有一款小游戏《拥挤城市》应该就是基于K均值聚类实现基于密度聚类,与距离聚类不同,基于密度聚类的思想是源于通过距离判断样本是否连通(需指定连通距离的阈值),从而完成样本划分。由于划分结果仅取决于连通距离的阈值,所以不可指定聚类的簇数。典型算法模型是DBSCAN基于层次聚类,具体又可细分为自顶向下和自底向上,以自底向上层次聚类为例:首先将所有样本划分为一类,此时聚类簇数K=样本个数N,遍历寻找K个簇间最相近的两个簇并完成合并,此时还有K-1个簇,如此循环直至划分为指定的聚类簇数。当然,这里评价最相近的两个簇的标准又可细分为最小距离、最大距离和平均距离。09 基本学习模型分类和回归任务是机器学习中的经典场景,同属于有监督学习。经典的学习算法主要包括5种:线性模型,回归任务中对应线性回归,分类任务则对应即逻辑回归,或者叫对数几率回归,实质是通过线性回归拟合对数几率的方式来实现二分类K近邻,最简单易懂的机器学习模型,无需训练(惰性模型),仅仅是通过判断自己所处位置周边的样本判断类比或者拟合结果支持向量机,一个经典的机器学习模型,最初也是源于线性分类,通过最大化间隔实现最可靠的分类边界。业界相传:支持向量机有三宝、间隔对偶核函数。其中"间隔"由硬间隔升级为软间隔解决了带异常值的线性不可分场景,"对偶"是在优化过程中求解拉格朗日问题的一个小技巧,而核函数才是支持向量机的核心,通过核实的核函数可以实现由线性可分向线性不可分的升级、同时避免了维度灾难朴素贝叶斯,源于概率论中贝叶斯全概率公式,模型训练的过程就是拟合各特征分布概率的过程,而预测的过程则是标出具有最大概率的类比,是一个纯粹的依据概率完成分类任务的模型。而像逻辑回归、K近邻、支持向量机以及决策树,虽然也都可以预测出各类别概率,但并不是纯粹意义上的概率决策树,这是一个直观而又强大的机器学习模型,训练过程主要包括特征选择-切分-剪枝,典型的3个决策树是ID3、C4.5和CART,其中CART树既可用于分类也可用于回归。更重要的是,决策树不仅模型自身颇具研究价值,还是众多集成学习模型的基学习器。在以上5个经典的基本学习模型中,除了朴素贝叶斯仅用于分类任务外,其他4个模型都是既可分类也可回归的模型。10 集成学习模型当基本学习模型性能难以满足需求时,集成学习便应运而生。集成学习,顾名思义,就是将多个基学习器的结果集成起来汇聚出最终结果。而根据汇聚的过程,集成学习主要包括3种流派:bagging,即bootstrap aggregating,通过自助取样(有放回取样)实现并行训练多个差异化的基学习器,虽然每个学习器效果可能并不突出,但通过最后投票得到的最终结果性能却会稳步提升。当基学习器采取决策树时,bagging思想的集成学习模型就是随机森林。另外,与bagging对应的另一种方式是无放回取样,相应的方法叫pasting,不过应用较少boosting,即提升法。与bagging模型并行独立训练多个基学习器不同,boosting的思想是基于前面训练结果逐渐训练更好的模型,属于串行的模式。根据实现细节不同,又具体分为两种boosting模型,分别是Adaboost和GBDT,二者的核心思想差异在于前者的提升聚焦于之前分错的样本、而后者的提升聚焦于之前漏学的残差。另外一个大热的XGBoost是对GBDT的一个改进,实质思想是一致的。stacking,即堆栈法,基本流程与bagging类似而又不同:stacking也是并行独立训练多个基学习器,而后又将这些训练的结果作为特征进行再次学习。有些类似于深度学习中的多层神经网络。11 小节以上,对sklearn中的常用子模块进行了粗略简介,基本涵盖了常用的模型和辅助函数,对于sklearn入门来说是足够的。当然,本文仅旨在建立对sklearn库的宏观框架,更为深入的学习当然还是要查阅专项教程。相关阅读:临行在即,分享一个自己写的sklearn源码库python数据科学系列:seaborn入门详细教程python数据科学系列:pandas入门详细教程python数据科学系列:matplotlib入门详细教程python数据科学系列:numpy入门详细教程发布于 2021-01-08 22:49机器学习数据科学sklearn​赞同 90​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录机器学习小菜的机器学

机器学习最佳Python库:Scikit-learn入门指南 - 知乎

机器学习最佳Python库:Scikit-learn入门指南 - 知乎切换模式写文章登录/注册机器学习最佳Python库:Scikit-learn入门指南未艾人工智能2007年,Scikit-learn首次被Google Summer of Code项目开发使用,现在已经被认为是最受欢迎的机器学习Python库。Scikit-learn被视为机器学习项目(尤其是在生产系统中)最佳选择之一的原因有很多,包括且不限于以下内容:Scikit-learn是一个非常强大的工具,能为库的开发提供了高水平的支持和严格的管理。清晰一致的代码样式可确保我们的机器学习代码易于理解和再现,并大大降低了对机器学习模型进行编码的入门门槛。Scikit-learn得到了很多第三方工具的支持,有非常丰富的功能适用于各种用例。如果你正在学习机器学习,那么Scikit-learn可能是最好的入门库。其简单性意味着很容易入门,通过学习Scikit-learn的用法,我们还将掌握典型的机器学习工作流程中的关键步骤。下文是对Scikit-learn的入门介绍,应该能让你全面了解Scikit-learn,并且能够开发一个简单的机器学习模型了。如果你还没有安装Scikit的最新版本,可以运行以下命令代码:pip install scikit-learn本文所用数据集为Wine数据集,数据集地址为:https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_wine.html该数据集也可以直接从Scikit-learn API导入。from sklearn.datasets import load_wine

X,y = load_wine(return_X_y=True)Estimators(估算器)Scitkit-learn 库提供了多种预构建算法,可以执行有监督和无监督的机器学习。它们通常被称为估算器。为项目选择何种估计器取决于我们拥有的数据集和我们要解决的问题。Scitkit-learn官方文档提供了如下所示的图表,可以帮助我们确定哪种算法适合我们的任务。Scikit learn之所以能如此直接地使用,是因为无论我们使用的模型或算法是什么,用于模型训练和预测的代码结构都是相同的。为了说明这一点,让我们来看一个例子。假设我们正在处理一个回归问题,希望训练一个线性回归算法,并使用得到的模型进行预测。使用Scikit learn 的第一步是调用 logistic 回归估计器并将其另存为对象。下面的示例调用该算法并将其保存为一个名为 lr 的对象。from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()下一步是将模型拟合到一些训练数据中。这是使用 fit() 方法执行的。我们在特征和目标数据上调用 lr.fit(),并保存生成的模型为称为模型的对象。在下面的示例中,我还使用 train_test_split() 方法将数据集拆分为测试和训练数据。from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

model = lr.fit(X_train, y_train)接下来,我们使用模型和预测() 方法对以前不可见的数据进行预测。predictions = model.predict(X_test)如果我们现在要使用 Scitkit-learn 执行不同的任务,比如说,我们想训练一个随机森林分类器。代码看起来非常相似,并且具有相同的步骤数。from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier()

rf_model = rf.fit(X_train, y_train)

rf_predictions = rf_model.predict(X_test)这种一致的代码结构使得开发机器学习模型非常直接,并且还生成高度可读和可重复的代码。预处理在大多数实际机器学习项目中,我们使用的数据不一定准备好训练模型。很可能首先需要执行一些数据预处理和转换步骤,例如处理缺失值、将分类数据转换为数字或应用要素缩放。Scikit-learn 具有执行这些预处理步骤的内置方法。例如,SimpleImputer() 会使用我们选择的方法来填充缺失的值。from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='mean')

X_train_clean = imputer.fit(X_train)在 Scikit-learn 官方文档中列出了数据预处理的完整选项:https://scikit-learn.org/stable/modules/preprocessing.html模型评估一旦一个模型被训练过,我们就需要衡量这个模型在预测新数据方面的好坏程度。此步骤称为模型评估,我们选择的度量将由我们希望解决的任务来确定。例如,通常在回归问题中,我们可以选择RMSE,而对于分类,则可以选择 F1 分数。所有估算器都包含一个 score()方法,该方法返回与它们执行的机器学习任务最相关的默认指标。Scikit-learn 还提供了一组指标函数,这些函数为模型提供了更详细的评估。例如,对于分类任务,库具有分类报告,提供精度、召回、F1 评分和总体精度。分类报告代码和输出如下所示。from sklearn.metrics import classification_report

print(classification_report(rf_predictions, y_test))模型优化Scikit-learn 库中的所有估算器都包含一系列参数,有多个选项,为特定算法选择的值都将影响最终模型的性能。例如,使用 RandomForestClass 表示器,我们可以将树的 max_depth 设置为可能的任何值,并且根据数据和任务的不同值,此参数的不同值将产生不同的结果。这种尝试不同参数组合以找到最佳组合的过程称为超参数优化。Scikit-learn 提供了两个自动执行此任务的工具,GridSearchCV 实现了一种称为详尽网格搜索的技术,以及执行随机参数优化的随机搜索 CV。下面的示例使用 GridSearchCV 查找随机森林分类器的最佳参数,输出结果在代码下方。param_grid = {

'n_estimators': [200, 500],

'max_features': ['auto', 'sqrt', 'log2'],

'max_depth' : [4,5,6,7,8],

'criterion' :['gini', 'entropy']

}

from sklearn.model_selection import GridSearchCV

CV = GridSearchCV(rf, param_grid, n_jobs= 1)

CV.fit(X_train, y_train)

print(CV.best_params_)

print(CV.best_score_)管道Scikit-learn 包以管道的形式提供了一种更加方便的代码封装形式。此工具允许将所有预处理任务与分类器步骤连接在一起,以便简单地在单个管道对象上调用 fit() 或 predict() 执行工作流中的所有步骤。这样可以生成高可读代码,并减少机器学习工作流中步骤的重复。为了创建管道,我们首先在下面的代码中定义我称之为管道的对象中的步骤。然后,我们可以简单地调用此对象的拟合来训练模型。此外,管道对象还可用于对新数据进行预测。from sklearn.pipeline import Pipeline

pipe = Pipeline([('imputer', SimpleImputer()), ('rf', RandomForestClassifier())])

pipeline_model = pipe.fit(X_train, y_train)

pipeline_model.score(X_test, y_test)总结以上为本文所有内容,足以让你全面了解Scikit-learn,并且能够开发一个简单的机器学习模型了。希望以上内容能够帮助大家轻松入门最适合用来进行机器学习的Python库。--END--作者:Rebecca Vickery原文链接:https://towardsdatascience.com/a-beginners-guide-to-scikit-learn-14b7e51d71a4翻译:未艾信息(http://www.weainfo.net)发布于 2020-09-27 10:17Python 库sklearn机器学习​赞同 56​​3 条评论​分享​喜欢​收藏​申请

scikit-learn中文社区

scikit-learn中文社区

安装

用户指南

API

案例

更多

入门

教程

更新日志

词汇表

常见问题

交流群

scikit-learn

Machine Learning in Python

入门

0.23版本的发布要点

GitHub

交流微信群二维码

简单有效的工具进行预测数据分析

每个人都可以访问,并且可以在各种情况下重用

基于NumPy,SciPy和matplotlib构建

开源,可商业使用-BSD许可证

分类

标识对象所属的类别。

应用范围: 垃圾邮件检测,图像识别。

算法:

SVM

最近邻

随机森林

更多...

Examples

回归

预测与对象关联的连续值属性。

应用范围: 药物反应,股票价格。

算法:

SVR

最近邻

随机森林

更多...

Examples

聚类

自动将相似对象归为一组。

应用: 客户细分,分组实验成果。

算法:

K-均值

谱聚类

MeanShift

更多...

Examples

降维

减少要考虑的随机变量的数量。

应用: 可视化,提高效率。

算法:

K-均值

特征选择

非负矩阵分解

更多...

Examples

模型选择

比较,验证和选择参数和模型。

应用: 通过参数调整改进精度。

算法:

网格搜索

交叉验证

指标

更多...

Examples

预处理

特征提取和归一化。

应用程序: 转换输入数据,例如文本,以供机器学习算法使用。

算法:

预处理

特征提取

更多...

Examples

新闻

正在开发中的版本:

更新日志 (Changelog)

2020年8月. scikit-learn 0.23.2 可供下载 (更新日志).

2020年5月. scikit-learn 0.23.1 可供下载 (更新日志).

2020年5月. scikit-learn 0.23.0 可供下载 (更新日志).

Scikit-learn from 0.23 要求 Python 3.6 或更高版本.

2020年3月. scikit-learn 0.22.2 可供下载 (更新日志).

2020年1月. scikit-learn 0.22.1 可供下载 (更新日志).

2019年12月. scikit-learn 0.22 可供下载 (更新日志 and 发布亮点).

Scikit-learn from 0.21 要求 Python 3.5 或更高版本.

2019年7月. scikit-learn 0.21.3 (Changelog) and 0.20.4 (更新日志) 可供下载.

2019年5月. scikit-learn 0.21.0 to 0.21.2 可供下载 (更新日志).

关于

关于我们: CDA数据科学研究院

赞助支持: CDA考试认证中心

客服电话: +86 4000-51-9191

邮箱: service@cda.cn

关注我们

"Scikit-learn 中文文档由CDA数据科学研究院翻译,扫码关注获取更多信息。"

Copyright © 2015-2020, CDA数据科学研究院 版权所有 京ICP备11001960号-13

Scikit-learn_百度百科

it-learn_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10Scikit-learn播报讨论上传视频免费软件机器学习库Scikit-learn(以前称为scikits.learn,也称为sklearn)是针对Python 编程语言的免费软件机器学习库 [1]。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用。中文名sklearn外文名Scikit-learn所属学科深度学习、人工智能目录1产品介绍2实施3版本历史4中文社区产品介绍播报编辑Scikit-learn项目始于scikits.learn,这是David Cournapeau的Google Summer of Code项目。它的名称源于它是“ SciKit”(SciPy工具包)的概念,它是SciPy的独立开发和分布式第三方扩展。原始代码库后来被其他开发人员重写。2010年费边Pedregosa,盖尔Varoquaux,亚历山大Gramfort和Vincent米歇尔,全部由法国国家信息与自动化研究所的罗屈昂库尔,法国,把该项目的领导和做出的首次公开发行在二月一日2010在各种scikits中,scikit-learn以及scikit-image在2012年11月被描述为“维护良好且受欢迎” 。Scikit-learn是GitHub上最受欢迎的机器学习库之一。 [2]实施播报编辑Scikit-learn主要是用Python编写的,并且广泛使用numpy进行高性能的线性代数和数组运算。此外,用Cython编写了一些核心算法来提高性能。支持向量机由围绕LIBSVM的Cython包装器实现 ; 逻辑回归和线性支持向量机的相似包装围绕LIBLINEAR。在这种情况下,可能无法使用Python扩展这些方法。Scikit-learn与许多其他Python库很好地集成在一起,例如matplotlib和plotly用于绘图,numpy用于数组矢量化,pandas数据帧,scipy等。版本历史播报编辑Scikit-learn最初由David Cournapeau 于2007年在Google的夏季代码项目中开发。后来Matthieu Brucher加入该项目,并开始将其用作论文工作的一部分。2010年,法国计算机科学与自动化研究所INRIA参与其中,并于2010年1月下旬发布了第一个公开版本(v0.1 beta)。2022年12月。scikit-learn1.2.02022年5月。scikit-learn1.1.02021年9月。scikit-learn1.02020年12月。scikit-learn0.24.02020年5月。scikit-learn0.23.0 [3]2019年12月。scikit-learn 0.22.0 [4]2019年5月。scikit-learn 0.21.0 [5]2018年9月。scikit-learn 0.20.02017年7月。scikit-learn 0.19.02016年9月。scikit-learn 0.18.02015年11月。scikit-learn 0.17.02015年3月。scikit-learn0.16.02014年7月。scikit-learn 0.15.02013年8月。scikit-learn 0.14 [6]中文社区播报编辑Scikit-learn中文社区,由CDA全国教研团队承接,通过一年多的Scikit-learn文档的翻译和认真校对,从用户指南到API 、再到案例,翻译字数达一百余万字,相较与网络上流传的其他机器翻译的Scikit-learn中文资料,CDA Scikit-learn中文社区的翻译是最新的官方版本,并且内容更加全面,格式更加规范,翻译更加专业精准,努力为机器学习爱好者提供更便捷的学习途径。 [7]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略_scikit-learn库的功能-CSDN博客

>

Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略_scikit-learn库的功能-CSDN博客

Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略

一个处女座的程序猿

已于 2022-09-18 15:50:07 修改

阅读量1.6w

收藏

98

点赞数

27

分类专栏:

Python_Libraries

ML

AI/AGI

文章标签:

sklearn

机器学习

scikit-learn

于 2018-03-25 10:35:50 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_41185868/article/details/79682338

版权

ML

同时被 3 个专栏收录

501 篇文章

116 订阅

订阅专栏

AI/AGI

303 篇文章

203 订阅

订阅专栏

Python_Libraries

242 篇文章

203 订阅

订阅专栏

Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代)、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略

目录

scikit-learn的简介

1、scikit-learn的实现组件

2、scikit-learn的发展历史

scikit-learn的基本功能—六大部分

1、数据预处理

(1)、sklearn.preprcessing数据预处理包介绍

2、数据降维

3、模型选择

(1)、估计器Estimator、转换器Transformer介绍

(2)、流水线Pipeline包介绍

4、分类

5、回归

6、聚类

scikit-learn的安装

1、安装前的准备以及安装方法

2、测试scikit-learn是否安装成功

scikit-learn的使用方法

1、如何选择最合适的模型算法

scikit-learn的简介

       scikit-learn,scikits.learn,也称为sklearn,是针对Python 编程语言的免费软件机器学习库。scikit-learn项目最早由数据科学家 David Cournapeau 在 2007 年发起,需要NumPy和SciPy等其他包的支持,旨在与Python数值科学库NumPy和SciPy联合使用,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。        scikit-learn,是机器学习和数据挖掘中的一个功能强大的python包。在数据量不是过大的情况下,可以解决大部分问题。scikit-learn的特点如下:

用于预测数据分析的简单高效工具每个人都可以访问,并且可以在各种情况下重复使用基于 NumPy、SciPy 和 matplotlib 构建开源,商业可用 - BSD 许可证

       scikit-learn依托于Numpy、Scipy等几种工具包,封装大量经典以及最新的机器学习模型。该接口最早由David Cournapeau在2007年Google夏季代码节中提出并启动。后来作为Matthieu Brucher博士工作的一部分得以延续和完善。现在已经是相对成熟的机器学习开源项目。        近十年来,有超过20位计算机专家参与其代码的更新和维护工作。作为一款用于机器学习和实践的Python第只方开源程序库,scikit-learn因其出色的接口设计和高效的学习能力,尤其受ML爱好者的欢迎。        和其他众多的开源项目一样,scikit-learn目前主要由社区成员自发进行维护。可能是由于维护成本的限制,scikit-learn相比其他项目要显得更为保守。这主要体现在两个方面:

一是scikit-learn从来不做除机器学习领域之外的其他扩展;二是scikit-learn从来不采用未经广泛验证的算法。

官方文档:User guide: contents — scikit-learn 1.2.dev0 documentation

1、scikit-learn的实现组件

        scikit-learn主要是用Python编写的,并且广泛使用numpy进行高性能的线性代数和数组运算。此外,用Cython编写了一些核心算法来提高性能。支持向量机由围绕LIBSVM的Cython包装器实现 ; 逻辑回归和线性支持向量机的相似包装围绕LIBLINEAR。scikit-learn与许多其他Python库很好地集成在一起,例如matplotlib和plotly用于绘图,numpy用于数组矢量化,pandas数据帧,scipy等。

2、scikit-learn的发展历史

        scikit-learn项目始于scikits.learn,这是David Cournapeau的Google Summer of Code项目。它的名称源于它是“ SciKit”(SciPy工具包)的概念,它是SciPy的独立开发和分布式第三方扩展。原始代码库后来被其他开发人员重写。         scikit-learn最初由David Cournapeau 于2007年在Google的夏季代码项目中开发。后来Matthieu Brucher加入该项目,并开始将其用作论文工作的一部分。2010年,法国计算机科学与自动化研究所INRIA参与其中,并于2010年1月下旬发布了第一个公开版本(v0.1 beta)。

scikit-learn版本 发布日期 主要特点 scikit-learn 0.14 2013年8月 内容较多,请参考官网链接 scikit-learn 0.15 2014年7月 内容较多,请参考官网链接 scikit-learn 0.16 2015年3月 内容较多,请参考官网链接 scikit-learn 0.17 2015年11月 内容较多,请参考官网链接 scikit-learn 0.18 2016年9月 内容较多,请参考官网链接 scikit-learn 0.19 2017年7月 内容较多,请参考官网链接 scikit-learn 0.20 2018年9月 内容较多,请参考官网链接 scikit-learn 0.21 2019年5月 内容较多,请参考官网链接 scikit-learn 0.22 2019年12月 内容较多,请参考官网链接 scikit-learn 0.23 2020年5月 内容较多,请参考官网链接 scikit-learn 0.24 2020年12月 内容较多,请参考官网链接 scikit-learn 1.0 2021年 9 月 scikit-learn 1.0.0 版需要 python 3.7+、numpy 1.14.6+ 和 scipy 1.1.0+。可选的最小依赖是 matplotlib 2.2.2+。 scikit-learn 1.1 2022年 5 月 内容较多,请参考官网链接 scikit-learn 1.2 In Development

官方版本更新简介:Release History — scikit-learn 1.2.dev0 documentation

scikit-learn的基本功能—六大部分

        scikit-learn的基本功能主要被分为:数据预处理,数据降维,模型选择,分类,回归,聚类六大部分。 scikit-learn涉及的算法中(分类、回归、聚类算法)包括支持向量机,随机森林,梯度提升,k均值和DBSCAN等等。 

1、数据预处理

        数据预处理,是指数据的特征提取和归一化,是机器学习过程中的第一个也是最重要的一个环节。这里归一化是指将输入数据转换为具有零均值和单位权方差的新变量,但因为大多数时候都做不到精确等于零,因此会设置一个可接受的范围,一般都要求落在0-1之间。而特征提取是指将文本或图像数据转换为可用于机器学习的数字变量。  需要特别注意的是,这里的特征提取与上文在数据降维中提到的特征选择非常不同。特征选择是指通过去除不变、协变或其他统计上不重要的特征量来改进机器学习的一种方法。  总结来说,scikit-learn实现了一整套用于数据降维,模型选择,特征提取和归一化的完整算法/模块,虽然缺少按步骤操作的参考教程,但scikit-learn针对每个算法和模块都提供了丰富的参考样例和详细的说明文档。

官方链接:6.3. Preprocessing data — scikit-learn 1.2.dev0 documentation

(1)、sklearn.preprcessing数据预处理包介绍

规范化 MinMaxScaler :最大最小值规范化 Normalizer :使每条数据各特征值的和为1 StandardScaler :为使各特征的均值为0,方差为1 编码 LabelEncoder :把字符串类型的数据转化为整型 OneHotEncoder :特征用一个二进制数字来表示 Binarizer :为将数值型特征的二值化 MultiLabelBinarizer:多标签二值化

2、数据降维

        数据降维,是指使用主成分分析(PCA)、非负矩阵分解(NMF)或特征选择等降维技术来减少要考虑的随机变量的个数,其主要应用场景包括可视化处理和效率提升。

官方链接:2.5. Decomposing signals in components (matrix factorization problems) — scikit-learn 1.2.dev0 documentation

3、模型选择

        模型选择,是指对于给定参数和模型的比较、验证和选择,其主要目的是通过参数调整来提升精度。目前scikit-learn实现的模块包括:格点搜索,交叉验证和各种针对预测误差评估的度量函数。  

官方链接:3. Model selection and evaluation — scikit-learn 1.2.dev0 documentation

(1)、估计器Estimator、转换器Transformer介绍

估计器Estimator 很多时候可以直接理解成分类器,主要包含两个函数: fit():训练算法,设置内部参数。接收训练集和类别两个参数。 predict():预测测试集类别,参数为测试集。 大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。 转换器Transformer 转换器Transformer用于数据预处理和数据转换,主要是三个方法: fit():训练算法,设置内部参数。 transform():数据转换。 fit_transform():合并fit和transform两个方法。

(2)、流水线Pipeline包介绍

流水线Pipeline sklearn.pipeline包 流水线的功能:跟踪记录各步骤的操作(以方便地重现实验结果)、对各步骤进行一个封装、确保代码的复杂程度不至于超出掌控范围

4、分类

        分类算法,是指识别给定对象的所属类别,属于监督学习的范畴,最常见的应用场景包括垃圾邮件检测和图像识别等。目前scikit-learn已经实现的算法包括:支持向量机(SVM),最近邻,逻辑回归,随机森林,决策树以及多层感知器(MLP)神经网络等等。  需要指出的是,由于scikit-learn本身不支持深度学习,也不支持GPU加速,因此这里对于MLP的实现并不适合于处理大规模问题。有相关需求的读者可以查看同样对Python有良好支持的Keras和Theano等框架。  

官方链接:1. Supervised learning — scikit-learn 1.2.dev0 documentation

5、回归

        回归算法,是指预测与给定对象相关联的连续值属性,最常见的应用场景包括预测药物反应和预测股票价格等。目前scikit-learn已经实现的算法包括:支持向量回归(SVR),脊回归,Lasso回归,弹性网络(Elastic Net),最小角回归(LARS ),贝叶斯回归,以及各种不同的鲁棒回归算法等。可以看到,这里实现的回归算法几乎涵盖了所有开发者的需求范围,而且更重要的是,scikit-learn还针对每种算法都提供了简单明了的用例参考。  

官方链接:1. Supervised learning — scikit-learn 1.2.dev0 documentation

6、聚类

        聚类算法,是指自动识别具有相似属性的给定对象,并将其分组为集合,属于无监督学习的范畴,最常见的应用场景包括顾客细分和试验结果分组。目前scikit-learn已经实现的算法包括:K-均值聚类,谱聚类,均值偏移,分层聚类,DBSCAN聚类等。  

2.3. Clustering

2.3.1. Overview of clustering methods2.3.2. K-means2.3.3. Affinity Propagation2.3.4. Mean Shift2.3.5. Spectral clustering2.3.6. Hierarchical clustering2.3.7. DBSCAN2.3.8. OPTICS2.3.9. BIRCH2.3.10. Clustering performance evaluation

官方链接:2.3. Clustering — scikit-learn 1.2.dev0 documentation

scikit-learn的安装

1、安装前的准备以及安装方法

安装scikit-learn之前,python包内必要有的包,如Numpy、Scipy、Matlotlib等。

pip install scikit-learn

pip install scikit-learn==0.19.1

pip install scikit-learn==0.23.1

pip install F:\Program Files\Python\whl_scikit_learn\scikit_learn-0.19.1-cp34-cp34m-win_amd64.whl

2、测试scikit-learn是否安装成功

from sklearn import datasets

iris = datasets.load_iris()

digits = datasets.load_digits()

print (digits.data)

scikit-learn的使用方法

scikit-learn algorithm cheat-sheet

1、如何选择最合适的模型算法

 相关文章:Choosing the right estimator — scikit-learn 1.0.1 documentation

          解决机器学习问题的最困难的部分通常是为工作找到正确的估计量。不同的估计量更适合于不同类型的数据和不同的问题。下面的流程图旨在为用户提供一个关于如何处理问题的粗略指南,这些问题涉及到哪些评估人员要尝试您的数据。点击下表中的任何估算器查看其文档。

相关文章

scikit-learn与机器学习的那些不可告密的七七八八事

scikit-learn与深度学习的那些不可告密的七七八八事

关注博主即可阅读全文

优惠劵

一个处女座的程序猿

关注

关注

27

点赞

98

收藏

觉得还不错?

一键收藏

打赏

知道了

0

评论

Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略

​Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代)、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略目录scikit-learn的简介scikit-learn的基本功能—六大部分scikit-learn的安装scikit-learn的使用方法scikit-learn的简介 scikit-learn,scikits.learn,也称为

复制链接

扫一扫

专栏目录

scikit-learn-0.19.1.win32-py2.7.exe

11-20

SciKit learn的简称是SKlearn,是一个python库,专门用于机器学习的模块。 SKlearn包含的机器学习方式:

分类,回归,无监督,数据降维,数据预处理等等,包含了常见的大部分机器学习方法。

sklearn学习总结(超全面)

热门推荐

fuqiuai的博客

03-09

4万+

sklearn的官网链接http://scikit-learn.org/stable/index.html#

目录

1. 分类、回归

2. 降维

3. 模型评估与选择

4. 数据预处理

大类

小类

适用问题

实现

说明

分类、回归

1.1 广义线性模型

1.1.1 普通最小二乘法

回归

sk...

参与评论

您还未登录,请先

登录

后发表或查看评论

机器学习(十一):Scikit-learn库的基础与使用

无敌小怪兽_Zz的博客

07-03

7673

详细解释了Scikit-learn的一些基础用法,包括它的定义、安装、核心对象类型(评估器)和关键特性(如数据预处理,数据集切分,数据标准化和归一化),并学习了如何实现线性回归模型,包括了解超参数的概念,以及如何保存和加载模型,希望通过本文,能帮助大家对Scikit-learn有一个更深入的认识。

机器学习库:Scikitlearn的基础和应用

禅与计算机程序设计艺术

01-23

786

1.背景介绍

1. 背景介绍

Scikit-learn是一个开源的Python库,用于进行数据挖掘和机器学习。它提供了许多常用的机器学习算法,包括回归、分类、聚类、主成分分析等。Scikit-learn的设计目标是简单易用,使得数据科学家和机器学习工程师可以快速地构建和部署机器学习模型。

Scikit-learn的核心设计思想是基于NumPy和SciPy库,并且通过简单的函数接口和强大的文档...

Scikit-learn的六大功能

weixin_54186330的博客

09-12

5697

Scikit-learn的功能主要被分为六大部分:分类,回归,聚类,数据降维,模型选择和数据预处理。

scikit-learn

03-30

python 机器学习 scikit learn 手册、2000多页 比较全的、、、、、、、

Python机器学习库 (Scikits-Learn) User Guide

10-12

Python机器学习库 (Scikits-Learn) User Guide

【数据分析与可视化】SKlearn主要功能和模块概述(图文解释 简单易懂)

showswoller的博客

01-17

1912

【数据分析与可视化】SKlearn主要功能和模块概述(图文解释 简单易懂)

Scikit入门指南

TensorFlowNews

10-24

1101

作者|Rebecca Vickery

编译|VK

来源|Towards Datas Science

scikit-learn是2007年作为Googles Summer代码项目开发的,现在被广泛认为是最流行的机器学习Python库。

为什么这个库被认为是机器学习项目的最佳选择之一,特别是在生产系统中,有许多原因。这些包括但不限于以下内容。

它对库的开发有很高的支持和严格的管理,这意味着它是一个非常健壮的工具。

有一个清晰、一致的代码风格,确保机器学习代码易于理解和可复制,同时也大大降低了编写机器学习模

机器学习神器Scikit-Learn保姆级入门教程

SeizeeveryDay的博客

01-16

7210

Scikit-learn是一个非常知名的Python机器学习库,它广泛地用于统计分析和机器学习建模等数据科学领域。建模无敌:用户通过scikit-learn能够实现各种监督和非监督学习的模...

Neuropipe:Scikit-Learn中用于机器学习管道的简便支架

02-04

neuropipe是Scikit-Learn中用于机器学习管道的易于使用的微框架。 只需在命令行中回答有关项目的一系列问题,便会创建一个自定义模板,该模板适合最可能与您的任务相关的预处理功能和模型。

这些问题基于Scikit-Learn速查表,用于选择正确的学习算法:

用法

用pip安装neuropipe :

$ pip3 install neuropipe

然后浏览问卷并通过运行以下命令创建您的自定义项目文件夹:

$ neuropipe my_project

这将产生一条管道...

工作流程

一个新项目具有以下文件结构:

├── pipeline.py

├── engine/

│  

机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf

06-27

机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf

机器学习算法与应用大作业-基于预处理的小麦品种的分类和聚类源码+数据+项目使用说明.zip

07-20

<项目介绍>

机器学习算法与应用大作业-基于预处理的小麦品种的分类和聚类源码+数据+项目使用说明.zip

该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用!

该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考!

当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。

本项目基于python实现了seeds数据集的预处理与分类、聚类任务,使用了PCA、KPCA、LDA、KLDA四种算法进行数据预处理,使用SVM、逻辑回归、ANN三种方法对预处理与未预处理的数据进行了分类与评估,使用FCM方法对预处理与未预处理的数据进行了聚类与评估,完整地完成了项目的全部要求。实验过程中,对自己实现的预处理算法与sklearn的提供官方算法进行了对比;对比了预处理与否对分类与聚类精度的影响;对所有的算法均实现了可视化;基于pytorch框架使用自行搭建的MLP(多层感知机)神经网络对数据进行分类处理并总结效果。经过本次项目的实践,我对机器学习常用算法的理解与编程能力有了进一步提升,了解了预处理的重要性,也进行了不同机器学习算法应用在同一个问题上的对比,并认识到了各种算法的优劣,在日后解决科研难题的过程中,应当具体问题具体分析,选择最适合解决问题的那种算法。

环境配置

- 项目环境基于python3.6构建,为确保不报错,请使用python>=3.6的版本

- 建议使用conda命令进行python环境构建与依赖包的安装

```buildoutcfg

conda create -n ml_test python=3.6

activate ml_test

```

- 所需要的基本依赖包安装命令如下

```buildoutcfg

conda install numpy

conda install scikit-learn

conda install matplotlib

```

- 为运行KLDA,需要使用pip安装mlxtend扩充包

```buildoutcfg

pip install mlxtend

```

- 为运行神经网络,需要安装pytorch,使用cpu版本即可

```buildoutcfg

conda install pytorch

```

代码说明

- `1_1_pca_analysis.py` 自己实现的PCA预处理与sklearn实现的PCA预处理效果对比

- `1_2_kpca_analysis.py` 自己实现的KPCA预处理与sklearn实现的KPCA预处理效果对比

- `1_3_lda_analysis.py` 自己实现的LDA预处理与sklearn实现的LDA预处理效果对比

- `1_4_klda_analysis.py` sklearn未实现KLDA,这里只有自己实现的KLDA

- `2_1_1_svm_raw.py` 使用SVM对原始数据直接进行分类,包括不同kernel的选取对比

- `2_1_2_svm_pca.py` 使用SVM对PCA预处理后的数据进行分类,包括不同kernel的选取对比

- `2_1_3_svm_lda.py` 使用SVM对LDA预处理后的数据进行分类,包括不同kernel的选取对比

- `2_2_1_svm_raw.py` 使用逻辑回归对原始数据直接进行分类

- `2_2_2_svm_pca.py` 使用逻辑回归对PCA预处理后的数据进行分类

- `2_2_3_svm_lda.py` 使用逻辑回归对LDA预处理后的数据进行分类

- `2_3_ann.py` 使用MLP(多层感知机)对小麦品种分类

- `3_fcm_analysis.py` 使用FCM对小麦进行聚类并评估

- `dataset.py` 读取小麦数据集的工具包

PredictionAPI:有关将机器学习模型部署到生产中的教程

02-03

PredictionAPI

这是有关通过REST API从机器学习模型提供预测服务的教程。

年6月13日在会议上了此教程的一个版本。

目前正在编写完整的书面版本。

脚步

在磁盘上训练模型并将其持久化(请参阅modeling.ipynb ),

在API应用程序中复制预处理管道(请参阅application.py ),

将应用程序封装在Docker容器中(参见Dockerfile ),

将应用程序部署到云服务器。

技术要求

Python 3.5+和virtualenv,

码头工人

可以从随附的requirements.txt文件中安装所需的Python库:

virtualenv -p python3 pyenv

source pyenv/bin/activate

pip install -r requirements.txt

在本地运行应用程序

cd PredictionAPI

export FLASK_APP=application.py

python3 -m flask run

在Docker上

cd PredictionAPI

docker build -t pre

datasets:用于下载,预处理和数字化流行的机器学习数据集的脚本

05-16

此存储库包含用于下载,预处理和数字化流行的机器学习数据集的脚本。 在整个项目中,我通常会发现自己重写了相同的代码行以标准化,规范化或其他化数据,对分类变量进行编码,解析出要素的子集以及其他杂项。 为了...

Python-sklearn-RidgeRegression

2401_82889064的博客

03-04

677

/

sklearn函数:train_test_split(分割训练集和测试集)

daijingxin的博客

03-05

382

函数的功能是分割训练集和测试集。

ModuleNotFoundError: No module named ‘sklearn.cross_validation‘

最新发布

苏云南雁的博客

03-08

274

1、搜索引擎做第一步搜索,大部分问题网上有答案2、查看官方文档API,越是个性化问题,越要看官方文档,其实都很全3、学好英语,越是往深里看技术,国外资源越强大。

Python-sklearn.datasets-make_blobs

2401_82889064的博客

03-05

486

/

用python实现熟悉掌握scikit-learn机器学习库,实现KNN算法进行鸢尾花数据分类

05-27

好的,我可以为您提供一些关于使用scikit-learn机器学习库实现KNN算法进行鸢尾花数据分类的代码和步骤。以下是示例代码:

```python

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.neighbors import KNeighborsClassifier

from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集

iris = load_iris()

X = iris.data

y = iris.target

# 将数据集划分为训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 定义KNN分类器

knn = KNeighborsClassifier(n_neighbors=3)

# 训练KNN分类器

knn.fit(X_train, y_train)

# 预测测试集结果

y_pred = knn.predict(X_test)

# 计算分类器的准确率

accuracy = accuracy_score(y_test, y_pred)

print("Accuracy:", accuracy)

```

以上代码中,首先使用`load_iris()`函数加载鸢尾花数据集,然后使用`train_test_split()`函数将数据集划分为训练集和测试集。接着,使用`KNeighborsClassifier()`函数定义KNN分类器,并将其训练于训练集上。最后,使用`predict()`函数预测测试集结果,使用`accuracy_score()`函数计算分类器的准确率。

希望这个例子可以帮助您熟悉和掌握scikit-learn机器学习库的使用,并实现KNN算法进行鸢尾花数据分类。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

一个处女座的程序猿

CSDN认证博客专家

CSDN认证企业博客

码龄6年

人工智能领域优质创作者

3199

原创

173

周排名

1

总排名

3777万+

访问

等级

25万+

积分

111万+

粉丝

3万+

获赞

1万+

评论

7万+

收藏

私信

关注

热门文章

成功解决IndexError: index 0 is out of bounds for axis 1 with size 0

350214

Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略

287277

Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)最强详细攻略

264313

成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘

241450

GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)

208851

分类专栏

资深文章(前沿/经验/创新)

付费

98篇

精选(人工智能)-中级

付费

308篇

精选(人工智能+AIGC)-高级

付费

90篇

金融风控

付费

26篇

安装教程以及Bug解决

付费

332篇

成长书屋

付费

124篇

Matlab/C++/SQL

付费

96篇

CaseCode

9篇

SLAM

3篇

AI/AGI

303篇

BlockChain

39篇

CV

242篇

DataScience

325篇

NLP/LLMs

345篇

DayDayUp

102篇

Algorithm/Interview

101篇

High&NewTech

96篇

ML

501篇

DL/R

380篇

RL/KG

11篇

Paper

69篇

BigData/Cloud Computing

56篇

Python编程(初级+进阶)

259篇

Python_Libraries

242篇

Java/Html/JS/VB/Go etc

27篇

Computer knowledge

730篇

TF/PyTorch

86篇

Keras/Caffe

28篇

Dataset

59篇

Crawler

22篇

VM(Linux/Ubuntu)

32篇

Tool/IDE etc

86篇

2D(Autolisp)/3D

10篇

Computer(Win)

62篇

最新评论

成功解决ProxyError: Conda cannot proceed due to an error in your proxy configuration.Check for typos an

qq_52107201:

需要关闭代理

LLMs之Claude3:Claude 3的简介、安装和使用方法、案例应用之详细攻略

CSDN-Ada助手:

推荐 Python入门 技能树:https://edu.csdn.net/skill/python?utm_source=AI_act_python

AI:大模型领域最新算法SOTA核心技术要点总结(一直持续更新)、大模型实战与理论经验总结(训练优化+代码实战+前沿技术探讨+最新案例应用)、带你精细解读多篇优秀的大模型论文、AI领域各种工具产品集合

进阶%:

围观下排名第一的博主

Keras之DNN:利用DNN【Input(8)→(12+8)(relu)→O(sigmoid)】模型实现预测新数据(利用糖尿病数据集的八个特征进行二分类预测

浅夏148:

大佬你好,具体预测模型代码和数据可以发给我嘛,1435338042@qq.com,谢谢了

LLMs之Claude3:Claude 3的简介、安装和使用方法、案例应用之详细攻略

一键难忘:

大佬的文章让我对这领域的技术问题有了更深入的了解,尤其是大佬提到的那些“坑点”,我相信能够在实际应用中避免或解决很多问题。谢谢大佬的分享,期待大佬的更多精彩文章,让我们共同学习、进步。

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

LLMs之Claude3:Claude 3的简介、安装和使用方法、案例应用之详细攻略

成功解决AttributeError: ‘EntitySet‘ object has no attribute ‘entity_from_dataframe‘

成功解决AttributeError: module ‘pandas.core.strings‘ has no attribute ‘StringMethods‘

2024年38篇

2023年446篇

2022年329篇

2021年267篇

2020年573篇

2019年784篇

2018年769篇

2017年3篇

目录

目录

分类专栏

资深文章(前沿/经验/创新)

付费

98篇

精选(人工智能)-中级

付费

308篇

精选(人工智能+AIGC)-高级

付费

90篇

金融风控

付费

26篇

安装教程以及Bug解决

付费

332篇

成长书屋

付费

124篇

Matlab/C++/SQL

付费

96篇

CaseCode

9篇

SLAM

3篇

AI/AGI

303篇

BlockChain

39篇

CV

242篇

DataScience

325篇

NLP/LLMs

345篇

DayDayUp

102篇

Algorithm/Interview

101篇

High&NewTech

96篇

ML

501篇

DL/R

380篇

RL/KG

11篇

Paper

69篇

BigData/Cloud Computing

56篇

Python编程(初级+进阶)

259篇

Python_Libraries

242篇

Java/Html/JS/VB/Go etc

27篇

Computer knowledge

730篇

TF/PyTorch

86篇

Keras/Caffe

28篇

Dataset

59篇

Crawler

22篇

VM(Linux/Ubuntu)

32篇

Tool/IDE etc

86篇

2D(Autolisp)/3D

10篇

Computer(Win)

62篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

sklearn

sklearn

sklearn

sklearn 中文文档

目录

作者

整理

校招巴士

安装 scikit-learn

1. 监督学习

1.0 监督学习

1.1. 广义线性模型

1.2. 线性和二次判别分析

1.3. 内核岭回归

1.4. 支持向量机

1.5. 随机梯度下降

1.6. 最近邻

1.7. 高斯过程

1.8. 交叉分解

1.9. 朴素贝叶斯

1.10. 决策树

1.11. 集成方法

1.12. 多类和多标签算法

1.13. 特征选择

1.14. 半监督学习

1.15. 等式回归

1.16. 概率校准

1.17. 神经网络模型(有监督)

2. 无监督学习

2.0 无监督学习

2.1. 高斯混合模型

2.2. 流形学习

2.3. 聚类

2.4. 双聚类

2.5. 分解成分中的信号(矩阵分解问题)

2.6. 协方差估计

2.7. 新奇和异常值检测

2.8. 密度估计

2.9. 神经网络模型(无监督)

3. 模型选择和评估

3.0 模型选择和评估

3.1. 交叉验证:评估估算器的表现

3.2. 调整估计器的超参数

3.3. 模型评估: 量化预测的质量

3.4. 模型持久化

3.5. 验证曲线: 绘制分数以评估模型

4. 检验

4.0 检验

4.1. 部分依赖图

5. 数据集转换

5.0 数据集转换

5.1. Pipeline(管道)和 FeatureUnion(特征联合): 合并的评估器

5.2. 特征提取

5.3 预处理数据

5.4 缺失值插补

5.5. 无监督降维

5.6. 随机投影

5.7. 内核近似

5.8. 成对的矩阵, 类别和核函数

5.9. 预测目标

6. 数据集加载工具

6.0 数据集加载工具

6.1. 通用数据集 API

6.2. 玩具数据集

6.3 真实世界中的数据集

6.4. 样本生成器

6.5. 加载其他数据集

7. 使用scikit-learn计算

7.0 使用scikit-learn计算

7.1. 大规模计算的策略: 更大量的数据

7.2. 计算性能

7.3. 并行性、资源管理和配置

教程

使用 scikit-learn 介绍机器学习

关于科学数据处理的统计学习教程

关于科学数据处理的统计学习教程

机器学习: scikit-learn 中的设置以及预估对象

监督学习:从高维观察预测输出变量

模型选择:选择估计量及其参数

无监督学习: 寻求数据表示

把它们放在一起

寻求帮助

处理文本数据

选择正确的评估器(estimator.md

外部资源,视频和谈话

API 参考

常见问题

时光轴

sklearn

Docs »

sklearn 中文文档

sklearn 简介

scikit-learn 是基于 Python 语言的机器学习工具

简单高效的数据挖掘和数据分析工具

可供大家在各种环境中重复使用

建立在 NumPy ,SciPy 和 matplotlib 上

开源,可商业使用 - BSD许可证

点击下载OpenCV最新中文官方文档pdf版

目录

安装 scikit-learn

用户指南

1. 监督学习

1.1. 广义线性模型

1.2. 线性和二次判别分析

1.3. 内核岭回归

1.4. 支持向量机

1.5. 随机梯度下降

1.6. 最近邻

1.7. 高斯过程

1.8. 交叉分解

1.9. 朴素贝叶斯

1.10. 决策树

1.11. 集成方法

1.12. 多类和多标签算法

1.13. 特征选择

1.14. 半监督学习

1.15. 等式回归

1.16. 概率校准

1.17. 神经网络模型(有监督)

2. 无监督学习

2.1. 高斯混合模型

2.2. 流形学习

2.3. 聚类

2.4. 双聚类

2.5. 分解成分中的信号(矩阵分解问题)

2.6. 协方差估计

2.7. 新奇和异常值检测

2.8. 密度估计

2.9. 神经网络模型(无监督)

3. 模型选择和评估

3.1. 交叉验证:评估估算器的表现

3.2. 调整估计器的超参数

3.3. 模型评估: 量化预测的质量

3.4. 模型持久化

3.5. 验证曲线: 绘制分数以评估模型

4. 检验

4.1. 部分依赖图

5. 数据集转换

5.1. Pipeline(管道)和 FeatureUnion(特征联合): 合并的评估器

5.2. 特征提取

5.3 预处理数据

5.4 缺失值插补

5.5. 无监督降维

5.6. 随机投影

5.7. 内核近似

5.8. 成对的矩阵, 类别和核函数

5.9. 预测目标 (y) 的转换

6. 数据集加载工具

6.1. 通用数据集 API

6.2. 玩具数据集

6.3 真实世界中的数据集

6.4. 样本生成器

6.5. 加载其他数据集

7. 使用scikit-learn计算

7.1. 大规模计算的策略: 更大量的数据

7.2. 计算性能

7.3. 并行性、资源管理和配置

教程

使用 scikit-learn 介绍机器学习

关于科学数据处理的统计学习教程

机器学习: scikit-learn 中的设置以及预估对象

监督学习:从高维观察预测输出变量

模型选择:选择估计量及其参数

无监督学习: 寻求数据表示

把它们放在一起

寻求帮助

处理文本数据

选择正确的评估器(estimator/)

外部资源,视频和谈话

API 参考

常见问题

时光轴

作者

sklearn-doc-zh:https://github.com/apachecn/sklearn-doc-zh

整理

http://scikitlearn.com.cn/

校招巴士

校招巴士

校招巴士网站一个专注于大学生校招求职的平台!旨在分享互联网大厂内推、校招资讯、面经笔经、职场干货、简历技巧等,助力百万大学生校招求职!

Next

sklearn PythonOK 协议:CC BY-NC-SA 4.0

Built with MkDocs using a theme provided by Read the Docs.

Next »

机器学习之Python — Sklearn库简介_python中的sklearn库的介绍-CSDN博客

>

机器学习之Python — Sklearn库简介_python中的sklearn库的介绍-CSDN博客

机器学习之Python — Sklearn库简介

最新推荐文章于 2024-03-07 11:12:40 发布

VIP文章

JOKER_1201

最新推荐文章于 2024-03-07 11:12:40 发布

阅读量1.8k

收藏

21

点赞数

分类专栏:

python

文章标签:

python

sklearn

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42181072/article/details/100043542

版权

文章目录

机器学习之Python — Sklearn库简介

1 Sklearn简介

2 Sklearn安装

3 Sklearn datasets

4 Sklearn通用学习模式

5 Sklearn数据预处理 – 标准化

6 Sklearn交叉验证

7 总结

参考资料

机器学习之Python — Sklearn库简介

1 Sklearn简介

Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、分类(Classfication)、聚类(Clustering) 、降维(Dimensionality Reduction)等方法。当我们面临机器学习问题时,便可根据下图来选择相应的方法。Sklearn具有以下特点:

 简单高效的数据挖掘和数据分析工具  让每个人能够在复杂环境中重复使用  建立NumPy、Scipy、MatPlotLib之上

sklearn库的结构

最低0.47元/天 解锁文章

优惠劵

JOKER_1201

关注

关注

0

点赞

21

收藏

觉得还不错?

一键收藏

知道了

0

评论

机器学习之Python — Sklearn库简介

文章目录机器学习之Python — Sklearn库简介1 Sklearn简介2 Sklearn安装3 Sklearn datasets4 Sklearn通用学习模式5 Sklearn数据预处理 – 标准化6 Sklearn交叉验证7 总结参考资料机器学习之Python — Sklearn库简介1 Sklearn简介Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常...

复制链接

扫一扫

专栏目录

python的sklearn包(win64位)

11-22

这是python开发人工智能所的用到的sklearn包,导入后可以开发神经网络,支持python3.5版本,win64位

Python的机器学习库:Sklearn库

m0_70911440的博客

11-20

289

其中,Scikit-learn(简称Sklearn)作为Python中最受欢迎和广泛使用的机器学习库之一,提供了丰富的功能和算法,帮助用户快速实现各种机器学习任务。3. 完善的文档和示例:Sklearn库提供了详细的文档和示例,帮助用户理解和使用库中的功能和算法。2. 丰富的功能和算法:Sklearn库提供了丰富的机器学习功能和算法,包括监督学习、无监督学习、特征工程和模型评估等。2. 图像识别:使用Sklearn库提供的特征选择和分类算法,可以实现对图像数据的识别和分类,如人脸识别和图像标注等。

参与评论

您还未登录,请先

登录

后发表或查看评论

机器学习之--sklearn介绍

qq_43498494的博客

05-26

249

文章目录机器学习框架sklearn框架结构启动notebook算法一---KNN

机器学习框架

数据挖掘:我们从数据中找出有规律的规则。数据分析:对数据分类处理,找出内在规律。这就是机器学习。

sklearn框架结构

会将依赖库也同时安装。

启动notebook

6个子文件夹模块

算法一—KNN

...

机器学习算法三之Python机器学习库sklearn简介

yohnyang的博客

08-06

1748

机器学习库使用简介

python机器学习中sklearn库简介学习

L29979264458的博客

05-05

1万+

python机器学习sklearn学习简介

win10+python3.6.5之Scikit-Learn的安装

诚朴勇毅

10-15

1045

一、文件下载

1.sklearn 需要在 numpy+mkl 安装之后和scipy 安装之后才可以安装。

2.scipy 在numpy+mkl安装之后才可以安装。

因此,三个软件的安装顺序是:numpy+mkl scipy sklearn

3.安装的三个文件的版本非常非常重要。版本不匹配会导致失败。

本次安装的python的版本为3.6.5,因此 以上三个文件的版本为

numpy-1.19.5+mkl-cp36-cp36m-win_amd64.whl

scipy-1....

sklearn浅析(一)——sklearn的组织结构

热门推荐

起风之后,只剩沙丘

07-21

2万+

sklearn是基于numpy和scipy的一个机器学习算法库,设计的非常优雅,它让我们能够使用同样的接口来实现所有不同的算法调用。本文首先介绍下sklearn内的模块组织和算法类的顶层设计图。三大模块监督学习(supervised learning)1.

neighbors:近邻算法

svm:支持向量机

kernel-ridge:岭回归

discriminant_analysis:判别分析

lin

(1-1)sklearn库的----- 数据处理

weixin_45014721的博客

08-19

1860

scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法。还包括了特征提取,数据处理和模型评估者三大模块。

一,sklearn官方文档的内容和结构

1.1 sklearn官方文档的内容

1.2 sklearn官方文档结构

 由图中,可以看到库的算法主要有四类:分类,回归,聚类,降维。其中:

常用的回归:线性、决策树、SVM、KNN

;集成回归:随机森林、Adaboost、GradientBoosting、

python | 数据分析(四)- Sklearn数据包

weixin_30562507的博客

08-21

308

sklearn是基于numpy和scipy的一个机器学习算法库,设计的非常优雅,它让我们能够使用同样的接口来实现所有不同的算法调用。

支持包括分类、回归、降维和聚类四大机器学习算法。还包含了特征提取、数据处理和模型评估三大模块。同时sklearn内置了大量数据集,节省了获取和整理数据集的时间。

使用sklearn进行机器学习的步骤一般分为:导入模块-创建数据-建立模型-训练-预测五步。

...

python第三方库大全win-Python标准库、第三方库和外部工具汇总

weixin_37988176的博客

11-01

1307

导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库、函数和外部工具。其中既有Python内置函数和标准库,又有第三方库和工具。这些库可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理、音频处理、数据挖掘/机器学习/深度学习、数据可视化、交互学习和集成开发以及其他Python协同数据工作工具。为了区分不同对象的来源和类型,本文将在描述...

python机器学习库sklearn-集成方法

11-16

集成方法 的目标是把多个使用给定学习算法构建的基估计器的预测结果结合起来,从而获得比单个估计器更好的泛化能力/鲁棒性。在 scikit-learn 中,bagging 方法使用统一的 BaggingClassifier 元估计器(或者 ...

python机器学习库sklearn——集成方法

02-24

本文来自csdn,本文将介绍sklearn中如何使用集成学习,模块还支持树的并行构建和预测结果的并行计算,希望对您的学习有所帮助。集成方法的目标是把多个使用给定学习算法构建的基估计器的预测结果结合起来,从而获得比...

基于python sklearn 的机器学习教程

09-25

基于python sklearn 的机器学习教程

基于python sklearn的机器学习教程

09-25

本教程是在学习机器学习的过程中的记录并进行整理之后的教程

Scrapy与分布式开发(3):Scrapy核心组件与运行机制

九月镇领将的博客

03-05

1175

Scrapy是一个为了爬取网站数据、提取结构性数据而编写的应用框架。它使用Python语言编写,并基于异步网络框架Twisted来实现高性能的爬虫。Scrapy最初是为了页面抓取(更确切地说是网络抓取)而设计的,但它也可以用于获取API返回的数据或通用的网络爬虫。

Python 语法高亮显示和格式化库之pygments使用详解

Rocky006的博客

03-07

971

在软件开发和编程领域,代码是我们的主要表达方式。因此,对于代码的可读性和可理解性至关重要。为了提高代码的可读性,代码语法高亮和格式化工具变得至关重要。在Python世界中,Pygments是一个强大的工具,它可以帮助开发人员高亮显示和格式化他们的代码。本文将深入探讨Pygments的功能、用法和示例代码,以及如何将其集成到你的项目中。

python 回文数

laocooon的博客

03-05

212

30次之内,有没有得到回文。

Java的 Map以及实现一个简单的红黑树

最新发布

好看的皮囊千篇一律,有趣的灵魂万里挑一。

03-07

1187

Map是将键映射到值的对象。map**不能包含重复的键**; 每个键最多只能映射到一个值。这个接口取代了Dictionary类,Dictionary类是一个完全抽象的类,而不是接口。

Map接口提供了三个集合视图,它们允许将映射的内容视为一组键、一组值或一组键-值映射。映射的顺序定义为映射集合视图上的迭代器返回其元素的顺序。一些类似实现,比如TreeMap类,对它们的顺序做出了特定的保证;其他类,如HashMap类,则不需要。

注意:如果使用可变对象作为映射键,必须非常小心。如果对象的值以影响相等比较的

MAE实战:使用MAE提高主干网络的精度(二)

AI浩

03-04

1075

看完第一篇,大家应该对MAE的训练流程有所了解了。链接:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/136022910?这篇再讲述一篇案例,我们一起实现吧!

python之机器学习sklearn库

10-11

好的,关于Python中的机器学习sklearn库,它是一个非常流行的机器学习库,提供了许多常用的机器学习算法和工具,包括分类、回归、聚类、降维等。使用sklearn库可以方便地进行数据预处理、特征工程、模型训练和评估等...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

JOKER_1201

CSDN认证博客专家

CSDN认证企业博客

码龄6年

暂无认证

2

原创

55万+

周排名

218万+

总排名

5833

访问

等级

92

积分

6

粉丝

13

获赞

0

评论

72

收藏

私信

关注

热门文章

MATLAB 如何绘制GIF动图,以全球SST为例

3957

机器学习之Python — Sklearn库简介

1876

分类专栏

python

1篇

matlab

海洋大气

1篇

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

MATLAB 如何绘制GIF动图,以全球SST为例

2019年2篇

目录

目录

分类专栏

python

1篇

matlab

海洋大气

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

sklearn和scikit-learn是一回事吗? - 知乎

sklearn和scikit-learn是一回事吗? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册系统科学sklearn和scikit-learn是一回事吗?sklearn和scikit-learn是一回事吗显示全部 ​关注者7被浏览67,374关注问题​写回答​邀请回答​好问题​2 条评论​分享​3 个回答默认排序瀚海惊涛地球科学​ 关注几乎可以认为是一个东西。scikit-learn是下载下来的工具, sklearn是在python调用包时候的缩写。发布于 2021-11-25 12:12​赞同 8​​1 条评论​分享​收藏​喜欢收起​圣普伦数字技术课程 Simplilearn中国数字技术教育,美好未来!​ 关注什么是 Scikit-Learn?Scikit-learn 是一个开源 Python 库,包括各种无监督和监督学习技术。它基于 Matplotlib、Pandas 和 NumPy 等技术和库,有助于简化编码任务。Scikit-learn 的功能包括:分类(包括 K-Nearest Neighbors)预处理(包括最小最大归一化)聚类(包括 K-Means++ 和 K-Means)回归(包括逻辑回归和线性回归)Scikit-learn是使用最广泛的Python机器学习库之一。它拥有标准简单的界面,可用于预处理数据以及模型的训练、优化和评估。该项目最初始自David Cournapeau在Google Summer of Code活动中开发的项目,并于2010年首次公开发布。自创建以来,该库已发展成为了一个丰富的生态系统,可用于开发机器学习模型。Scikit-learn的优点想要将算法连接到他们的平台的用户可以在 scikit-learn 网站上找到详细的 API 文档。社区用户量大,有很多贡献者、提供大型国际在线社区支持。使用起来很简单。只需最基本的许可和法律限制即可免费使用。scikit-learn 包具有极强的适应性和实用性,可用于各种现实世界的任务,例如开发神经图像、预测消费者行为等。Scikit-learn的缺点如果你更喜欢深度学习,scikit-learn就不是那么合适你学习。因为它使用起来比较简单,所以可能会导致一些初级数据科学家懒得去学习基础知识而蛮干。什么是 TensorFlow?TensorFlow 是一个由 Google 维护的开源框架,用于对机器学习模型(主要是神经网络)进行原型设计和评估。TensorFlow 采用用多种语言编写,包括 Swift、Python、Go、Javascript、Java 和 C++等,并包括对各种其他语言的社区构建支持。TensorFlow允许应用程序在无需修改的前提下也能够在标准 CPU 上运行的库。Linux、Android、macOS 和 Windows 是 TensorFlow 支持的系统。谷歌云机器学习引擎也可以在不使用传统计算平台的情况下运TensorFlow 模型。TensorFlow 通常与神经网络相关联,它的吸引力源于其速度和神经网络优化。很少有框架能够与 TensorFlow 在 GPU、CPU、GPU 和 TPU 上运行模型的能力相匹敌。TensorFlow的优点它可以快速轻松地计算数学表达式。TensorFlow 可以生成大量序列模型并训练用于数字分类的深度神经网络。TensorFlow 提供了一项独特的功能,可以同时提高内存和数据的使用率。它有谷歌的支持。它提供定期的新功能发布、快速升级和流畅的性能。TensorFlow 旨在与各种后端软件(ASIC、GPU 等)一起使用,并且具有极高的并行性。TensorFlow 背后有一个强大的社区。与 Theano 和 Torch 等内在库相比,TensorFlow 的计算图可视化更加出色。它使用了一种新颖的方法,使我们能够跟踪许多指标并监控模型的训练进度。它的性能非常出色,与行业中的佼佼者不相上下。TensorFlow的缺点目前,NVIDIA 是唯一支持TensorFlow的 GPU,而 Python 是唯一支持的完整语言,这是一个劣势,因为有越来越多的其他深度学习语言。有很多用户更喜欢在 Windows 环境中工作而不是在 Linux 上工作,很遗憾TensorFlow 并不能满足他们的需求。如果实在想装,Windows 用户也可以通过 Python 包库 (pip) 或 conda 安装它。不支持 OpenCL。由于 TensorFlow 的独特结构,很难发现和排除错误。要求学习者拥有扎实的高等数学和线性代数基础,对机器学习有透彻的了解,学习门槛高。总的来说,Scikit-learn 和 TensorFlow 旨在帮助开发人员创建和基准测试新模型,因此它们的功能实现非常相似,不同之处在于 Scikit-learn 在实践中用于更广泛的模型,而 TensorFlow 更适用于神经网络。TensorFlow深度学习Simplilearn圣普伦的TensorFlow认证培训计划由行业领军人物开发的,并与最前沿的优质实践保持一致性。在这份学习计划中,你将掌握Deep Learning、TensorFlow,卷积网络、循环神经网络、PyTorch以及图像分类等多项技能。发布于 2022-05-01 19:33​赞同 4​​添加评论​分享​收藏​喜欢收起​​