Sklearn笔记
python算法包——sklearn
数据科学家修炼之道
Life is short, I use Python、Scala、Java、R、Julia、Spark、Flink、Matlab、Spss、Stata、Sas、ML and DL.
展开
-
Sklearn实现主成分分析
from time import timeimport loggingimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.model_selection import GridSearchCVfrom sklearn.datasets import fetch_lfw_peoplefrom sklearn.metrics import classifica原创 2021-01-15 14:25:04 · 346 阅读 · 0 评论 -
Sklearn数据预处理
sklearn.preprocessing 包提供了几个常见的实用功能和变换器类型,用来将原始特征向量更改为更适合机器学习模型的形式。一般来说,机器学习算法受益于数据集的标准化。如果数据集中存在一些离群值,那么稳定的缩放或转换更合适。不同缩放、转换以及归一在一个包含边缘离群值的数据集中的表现在 Compare the effect of different scalers on data with outliers 中有着重说明。5.3.1 标准化,也称去均值和方差按比例缩放数据集的 标准化 对sci原创 2021-01-14 14:20:30 · 193 阅读 · 0 评论 -
Sklearn特征提取
模块 sklearn.feature_extraction 可用于提取符合机器学习算法支持的特征,比如文本和图片。注意 特征特征提取与特征选择有很大的不同:前者包括将任意数据(如文本或图像)转换为可用于机器学习的数值特征。后者是将这些特征应用到机器学习中。>>> measurements = [... {'city': 'Dubai', 'temperature': 33.},... {'city': 'London', 'temperature': 12.},.原创 2021-01-14 14:19:35 · 466 阅读 · 0 评论 -
Sklearn的pipeline
Pipeline 可以把多个评估器链接成一个。这个是很有用的,因为处理数据的步骤一般都是固定的,例如特征选择、标准化和分类。Pipeline 在这里有多种用途:便捷性和封装性 你只要对数据调用 fit和 predict 一次来适配所有的一系列评估器。联合的参数选择 你可以一次grid search管道中所有评估器的参数。安全性 训练转换器和预测器使用的是相同样本,管道有助于防止来自测试数据的统计数据泄露到交叉验证的训练模型中。管道中的所有评估器,除了最后一个评估器,管道的所有评估器必须是转换器。 (原创 2021-01-14 10:08:21 · 191 阅读 · 1 评论 -
Sklearn部分依赖图
部分依赖图(以下简称PDP)显示了目标响应[1]和一组“目标”特征之间的依赖关系,并边缘化所有其他特征(特征补集,是目标特征集关于全部特征集合的补集)的值。直观地,我们可以将部分依赖关系解释为预期目标响应作为“目标”特征的函数。由于人类感知的限制,目标特征集的大小必须很小(通常是一个或两个),因此目标特征通常需要从最重要的特征中选择。下图展示了使用GradientBoostingRegressor实现的,加利福尼亚州住房数据集的四个单向和一个双向PDP:单向PDP告诉我们目标响应和目标特征(如线性、非原创 2021-01-14 10:06:46 · 2781 阅读 · 0 评论 -
Sklearn验证曲线
每种估计器都有其优势和缺陷。它的泛化误差可以用偏差、方差和噪声来分解。估计值的 偏差 是不同训练集的平均误差。估计值的 方差 用来表示它对训练集的变化有多敏感。噪声是数据的一个属性。在下面的图中,我们可以看到一个函数 f(x) = \cos (\frac{3}{2} \pi x) 和这个函数的一些噪声样本。 我们用三个不同的估计来拟合函数: 多项式特征为1,4和15的线性回归。我们看到,第一个估计最多只能为样本和真正的函数提供一个很差的拟合 ,因为它太简单了(高偏差),第二个估计几乎完全近似,最后一个估计原创 2021-01-14 10:05:08 · 209 阅读 · 0 评论 -
Sklearn模型持久化
在训练完 scikit-learn 模型之后,最好有一种方法来将模型持久化以备将来使用,而无需重新训练。 以下部分为您提供了有关如何使用 pickle 来持久化模型的示例。 在使用 pickle 序列化时,我们还将回顾一些安全性和可维护性方面的问题。pickle的另一种方法是使用相关项目中列出的模型导出工具之一将模型导出为另一种格式。与pickle不同,一旦导出,就不能恢复完整的Scikit-learn estimator对象,但是可以部署模型进行预测,通常可以使用支持开放模型交换格式的工具,如“ONNX原创 2021-01-14 10:04:22 · 610 阅读 · 0 评论 -
Sklearn模型评估
有 3 种不同的 API 用于评估模型预测的质量:Estimator score method(估计器得分的方法): Estimators(估计器)有一个 score(得分) 方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 estimator (估计器)的文档中会有相关的讨论。Scoring parameter(评分参数): Model-evaluation tools (模型评估工具)使用 cross-validati原创 2021-01-14 10:02:18 · 799 阅读 · 0 评论 -
Sklearn调整超参数
超参数,即不直接在估计器内学习的参数。在 scikit-learn 包中,它们作为估计器类中构造函数的参数进行传递。典型的示例有:用于支持向量分类器的 C 、kernel 和 gamma ,用于Lasso的 alpha 等。搜索超参数空间以便获得最好 交叉验证 分数的方法是可能的而且是值得提倡的。通过这种方式,构造估计器时被提供的任何参数或许都能被优化。具体来说,要获取到给定估计器的所有参数的名称和当前值,使用:estimator.get_params()搜索包括:估计器(回归器或分类器,例如原创 2021-01-14 10:01:10 · 663 阅读 · 0 评论 -
Sklearn实现交叉验证
学习预测函数的参数,并在相同数据集上进行测试是一种错误的做法: 一个仅给出测试用例标签的模型将会获得极高的分数,但对于尚未出现过的数据它则无法预测出任何有用的信息。 这种情况称为 overfitting(过拟合). 为了避免这种情况,在进行(监督)机器学习实验时,通常取出部分可利用数据作为 test set(测试数据集) X_test, y_test。需要强调的是这里说的 “experiment(实验)” 并不仅限于学术(academic),因为即使是在商业场景下机器学习也往往是从实验开始的。下面是模型训练原创 2021-01-14 09:58:33 · 477 阅读 · 0 评论 -
Sklearn实现Brich聚类
The Birch 为给定数据构建一棵 Characteristic Feature Tree (CFT,聚类特征树)。 数据实质上是被有损压缩成一组 Characteristic Feature nodes (CF Nodes,聚类特征节点)。 CF Nodes 有许多称为 Characteristic Feature subclusters (CF Subclusters) 的子簇,并且这些位于非终结位置的CF Subclusters 可以拥有 CF Nodes 作为子节点。CF Subcluster原创 2021-01-14 09:57:16 · 297 阅读 · 0 评论 -
Sklearn实现OPTICS聚类
OPTICS算法与DBSCAN算法有许多相似之处,可以认为是DBSCAN算法将eps要求从一个值放宽到一个值范围的推广。OPTICS与DBSCAN的关键区别在于OPTICS算法建立了一个可达性图,它为每个样本分配了一个reachability_(可达性距离)和一个簇ordering_属性内的点(spot);这两个属性是在模型拟合时分配的,用于确定簇的成员关系。如果运行OPTICS时max_eps设置为默认值inf,则可以使用cluster_optics_dbscan方法对任意给定的eps值在线性时间内重复执原创 2021-01-13 19:17:53 · 1427 阅读 · 1 评论 -
Sklearn实现DBSCAN聚类
The DBSCAN 算法将簇视为被低密度区域分隔的高密度区域。由于这个相当普遍的观点, DBSCAN发现的簇可以是任何形状的,与假设簇是凸的 K-means 相反。 DBSCAN 的核心概念是 core samples, 是指位于高密度区域的样本。 因此一个簇是一组核心样本,每个核心样本彼此靠近(通过某个距离度量测量) 和一组接近核心样本的非核心样本(但本身不是核心样本)。算法中的两个参数, min_samples 和 eps,正式的定义了我们所说的 稠密(dense)。较高的 min_samples 或原创 2021-01-13 19:16:50 · 1541 阅读 · 0 评论 -
Sklearn实现层次聚类
层次聚类(Hierarchical clustering)代表着一类的聚类算法,这种类别的算法通过不断的合并或者分割内置聚类来构建最终聚类。 聚类的层次可以被表示成树(或者树形图(dendrogram))。树根是拥有所有样本的唯一聚类,叶子是仅有一个样本的聚类。 请参照 Wikipedia page 查看更多细节。The AgglomerativeClustering 使用自下而上的方法进行层次聚类:开始是每一个对象是一个聚类, 并且聚类别相继合并在一起。 连接标准(linkage criteria 译注原创 2021-01-13 17:52:29 · 2651 阅读 · 0 评论 -
Sklearn实现谱聚类
SpectralClustering(谱聚类) 是在样本之间进行关联矩阵的低维度嵌入,然后在低维空间中使用 KMeans 算法。 如果关联矩阵稀疏并且 pyamg 模块已经被安装,则这是非常有效的。 谱聚类 需要指定簇的数量。这个算法适用于簇数量少时,在簇数量多时是不建议使用。对于两个簇,它解决了相似图形上的 归一化切割(normalised cuts)的凸松弛问题: 将图形切割成两个,使得切割的边缘的权重比每个簇内的边缘的权重小。在图像处理时,这个标准是特别有趣的: 图像的顶点是像素,相似图形的边缘是图原创 2021-01-13 17:51:46 · 1400 阅读 · 0 评论 -
Sklearn实现MeanShift聚类
MeanShift 算法旨在于发现一个样本密度平滑的 blobs 。均值漂移(Mean Shift)算法是基于质心的算法,通过更新质心的候选位置,这些侯选位置通常是所选定区域内点的均值。然后,这些候选位置在后处理阶段被过滤以消除近似重复,从而形成最终质心集合。...原创 2021-01-13 17:51:17 · 676 阅读 · 0 评论 -
Sklearn实现AP聚类
AffinityPropagation AP聚类是通过在样本对之间发送消息直到收敛的方式来创建聚类。然后使用少量模范样本作为聚类中心来描述数据集,而这些模范样本可以被认为是最能代表数据集中其它数据的样本。在样本对之间发送的消息表示一个样本作为另一个样本的模范样本的 适合程度,适合程度值在根据通信的反馈不断更新。更新迭代直到收敛,完成聚类中心的选取,因此也给出了最终聚类。...原创 2021-01-13 17:50:43 · 610 阅读 · 0 评论 -
Sklearn实现小批量KMeans聚类
MiniBatchKMeans 是 KMeans 算法的一个变种,它使用小批量(mini-batches)来减少计算时间,而这多个批次仍然尝试优化相同的目标函数。小批量是输入数据的子集,在每次训练迭代中随机抽样。这些小批量大大减少了收敛到局部解所需的计算量。 与其他降低 k-means 收敛时间的算法不同,小批量 k-means 产生的结果通常只比标准算法略差。该算法在两个步骤之间进行迭代,类似于 vanilla k-means 。在第一步, b 样本是从数据集中随机抽取的,形成一个小批量。然后将它们分配原创 2021-01-13 17:50:10 · 722 阅读 · 0 评论 -
Sklearn实现KMeans聚类
内平方和(within-cluster sum-of-squares)的标准(criterion)。该算法需要指定簇的数量。它可以很好地扩展到大量样本(large number of samples),并已经被广泛应用于许多不同领域的应用领域。k-means 算法将一组 N 样本 X 划分成 K 不相交的簇 C, 每个都用该簇中的样本的均值 \mu_j 描述。 这个均值(means)通常被称为簇的 “质心(centroids)”; 注意,它们一般不是从 X 中挑选出的点,虽然它们是处在同一个空间。..原创 2021-01-13 17:48:40 · 707 阅读 · 0 评论 -
Sklearn实现流形学习
高维数据集通常难以可视化。虽然,可以通过绘制两维或三维的数据来显示高维数据的固有结构,但与之等效的高维图不太直观。为了促进高维数据集结构的可视化,必须以某种方式降低维度。通过对数据的随机投影来实现降维是最简单的方法。虽然这样做能实现数据结构一定程度的可视化,但这种随机选择方式仍有许多有待改进之处。在随机投影过程中,数据中更有趣的结构很可能会丢失。...原创 2021-01-13 17:46:17 · 319 阅读 · 0 评论 -
Sklearn实现高斯混合模型
>>> import numpy as np>>> from sklearn.mixture import GaussianMixture>>> X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])>>> gm = GaussianMixture(n_components=2, random_state=0).fit(X)>>> gm原创 2021-01-13 07:50:59 · 655 阅读 · 0 评论 -
Sklearn实现高斯混合模型
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import LogNormfrom sklearn import mixturen_samples = 300# generate random sample, two componentsnp.random.seed(0)# generate spherical data centered on (20, 20)shifted_gaussi原创 2021-01-12 07:46:48 · 790 阅读 · 3 评论 -
Sklearn实现等式回归
>>> from sklearn.datasets import make_regression>>> from sklearn.isotonic import IsotonicRegression>>> X, y = make_regression(n_samples=10, n_features=1, random_state=41)>>> iso_reg = IsotonicRegression().fit(X, y)&g原创 2021-01-12 07:45:29 · 161 阅读 · 0 评论 -
Sklearn实现随机森林
>>> from sklearn.model_selection import cross_val_score>>> from sklearn.datasets import make_blobs>>> from sklearn.ensemble import RandomForestClassifier>>> from sklearn.ensemble import ExtraTreesClassifier>>&g原创 2021-01-12 07:44:20 · 356 阅读 · 0 评论 -
Sklearn实现决策树
>>> from sklearn import tree>>> X = [[0, 0], [2, 2]]>>> y = [0.5, 2.5]>>> clf = tree.DecisionTreeRegressor()>>> clf = clf.fit(X, y)>>> clf.predict([[1, 1]])array([ 0.5])原创 2021-01-12 07:43:28 · 139 阅读 · 0 评论 -
Sklearn实现朴素贝叶斯
>>> from sklearn import datasets>>> iris = datasets.load_iris()>>> from sklearn.naive_bayes import GaussianNB>>> gnb = GaussianNB()>>> y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)>>>原创 2021-01-12 07:42:24 · 181 阅读 · 0 评论 -
Sklearn实现交叉分解
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cross_decomposition import PLSCanonical, PLSRegression, CCA# ############################################################################## Dataset based latent variables modeln = 500# 2原创 2021-01-12 07:41:27 · 353 阅读 · 0 评论 -
Sklearn实现高斯过程
>>> from sklearn.gaussian_process.kernels import ConstantKernel, RBF>>> kernel = ConstantKernel(constant_value=1.0, constant_value_bounds=(0.0, 10.0)) * RBF(length_scale=0.5, length_scale_bounds=(0.0, 10.0)) + RBF(length_scale=2.0, lengt原创 2021-01-12 07:40:37 · 755 阅读 · 0 评论 -
Sklearn实现二次判别分析
>>> from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis>>> import numpy as np>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])>>> y = np.array([1, 1, 1, 2, 2, 2])>>>原创 2021-01-12 07:39:27 · 341 阅读 · 0 评论 -
Sklearn实现线性判别分析
from scipy import linalgimport numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplfrom matplotlib import colorsfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysisfrom sklearn.discriminant_analysis import QuadraticDisc原创 2021-01-12 07:38:42 · 906 阅读 · 0 评论 -
Sklearn实现最近邻算法(KNN)
>>> from sklearn.neighbors import NearestNeighbors>>> import numpy as np>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])>>> nbrs = NearestNeighbors(n_neighbors=2, algorithm='ball_tree').fit(X)原创 2021-01-12 07:37:32 · 1003 阅读 · 1 评论 -
Sklearn实现被动攻击算法
>>> from sklearn.linear_model import PassiveAggressiveClassifier>>> from sklearn.datasets import make_classification>>>>>> X, y = make_classification(n_features=4, random_state=0)>>> clf = PassiveAggressiveC原创 2021-01-11 14:28:02 · 652 阅读 · 0 评论 -
Sklearn实现感知器
>>> from sklearn.datasets import load_digits>>> from sklearn.linear_model import Perceptron>>> X, y = load_digits(return_X_y=True)>>> clf = Perceptron(tol=1e-3, random_state=0)>>> clf.fit(X, y)Perceptron()原创 2021-01-11 14:27:07 · 324 阅读 · 0 评论 -
Sklearn实现随机梯度下降
>>> import numpy as np>>> from sklearn.linear_model import SGDClassifier>>> from sklearn.preprocessing import StandardScaler>>> from sklearn.pipeline import make_pipeline>>> X = np.array([[-1, -1], [-2, -1],原创 2021-01-11 14:26:20 · 370 阅读 · 0 评论 -
Sklearn实现稳健回归
from matplotlib import pyplot as pltimport numpy as npfrom sklearn.linear_model import ( LinearRegression, TheilSenRegressor, RANSACRegressor, HuberRegressor)from sklearn.metrics import mean_squared_errorfrom sklearn.preprocessing import Polynomia原创 2021-01-11 14:25:16 · 723 阅读 · 0 评论 -
Sklearn实现逻辑回归
print(__doc__)# Authors: Alexandre Gramfort <alexandre.gramfort@inria.fr># Mathieu Blondel <mathieu@mblondel.org># Andreas Mueller <amueller@ais.uni-bonn.de># License: BSD 3 clauseimport numpy as npimport matplot原创 2021-01-11 14:24:08 · 350 阅读 · 0 评论 -
Sklearn实现岭回归
岭回归的基本用法Ridge回归通过对系数的大小施加惩罚来解决普通最小二乘法的一些问题。岭系数最小化的是带惩罚项的误差平方和:minw∣∣Xw−y∣∣22+α∣∣w∣∣22min_w||Xw-y||^2_2+\alpha||w||_2^2minw∣∣Xw−y∣∣22+α∣∣w∣∣22其中,α≥0\alpha \ge 0α≥0是控制系数收缩量的复杂性参数,α\alphaα越大,收缩量越大,模型对共线性的鲁棒性越强。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2Qv原创 2021-01-11 10:43:37 · 1820 阅读 · 0 评论 -
Sklearn实现普通最小二乘法
LinearRegression拟合一个带有系数w=(w1,...,wp)w=(w_1,...,w_p)w=(w1,...,wp)的线性模型,使得数据集实际观测数据和预测数据之间的残差平方和最小,其数学表达式为:minw∣∣Xw−y∣∣22min_w||Xw-y||^2_2minw∣∣Xw−y∣∣22LinearRegression 会调用 fit 方法来拟合数组 X, y,并且将线性模型的系数 w 存储在其成员变量 coef_ 中:>>> from sklearn.lin原创 2021-01-11 07:41:32 · 1637 阅读 · 2 评论 -
sklearn系列——目录
监督学习广义线性模型线性和二次判别分析内核岭回归支持向量机随机梯度下降最近邻高斯过程交叉分解朴素贝叶斯决策树集成方法多类和多标签算法特征选择半监督学习等式回归概率校准神经网络模型(有监督)无监督学习高斯混合模型流形学习聚类双聚类分解成分中的信号(矩阵分解问题)协方差估计新奇和异常值检测密度估计神经网络模型(无监督)模型选择和评估...原创 2020-03-12 20:44:32 · 268 阅读 · 0 评论 -
多项式回归
机器学习中一种常见的模式,是使用线性模型训练数据的非线性函数。这种方法保持了一般快速的线性方法的性能,同时允许它们适应更广泛的数据范围。例如,可以通过构造系数的 polynomial features 来扩展一个简单的线性回归。在标准线性回归的情况下,你可能有一个类似于二维数据的模型:y^(w,x)=w0+w1x1+w2x2y^(w,x)=w0+w1x1+w2x2\hat{y}(w, x)...原创 2018-08-05 09:05:09 · 1044 阅读 · 0 评论