sklearn基础学习笔记

本文对scikit-learn中常用的class 和function做一个总结。

一、sklearn.cluster 聚类算法

class:cluster.KMeans([n_clusters, init, n_init, …])

KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, 
precompute_distances='auto', verbose=0, random_state=None, copy_x=True, 
n_jobs=1, algorithm='auto')

参数说明:

  • n_clusters:簇的数量及中心点的数量,即K值。除n_clusters外,其他参数都是KMeans算法的优化。
  • init:初始化方法,可选参数’k-means++’、'random’或给定一个ndarray数组,默认为k-means++。
  • n_int:KMeans算法以不同中心点运行的次数,最终的结果采用最好的输出。
  • max_iter:最大迭代次数,默认300

属性:

  • cluster_centers_:array,簇的中心点坐标
  • labels_:每个样本对应簇的下标(0,1,2…)
  • inertia_:float,所有样本到他们距离最近的簇中心点的距离的和。

方法:

  • fit(X):基于样本X对模型进行训练
  • predict(X):预测样本X所属的类别(簇)
  • score(X):KMeans算法中所有样本到簇中心距离总和的相反数,数值越大表明模型效果越好。

KMeans 损失函数:
属性值 inertia_ 与方法 score(X)
两者互为相反数,绝对值越小表明模型效果越好。

※score()方法可以做交叉验证用,但是KMeans交叉验证效果不好,总是K最大的效果最好。

cluster.MiniBatchKMeans([n_clusters, init, …])

MiniBatchKMeans(n_clusters=8, init='k-means++', max_iter=100, batch_size=100, 
verbose=0, compute_labels=True, random_state=None, tol=0.0, max_no_improvement=10, 
init_size=None, n_init=3, reassignment_ratio=0.01)

参数说明:

computer_labels:Boolean,是否计算训练集的标签,默认为True。

属性:

labels_:训练集的分类标签

方法:

  • partial_fit(X[, y]):从X中选取小批量数据进行模型训练。

※ sk-learn中所有含partial_fit()方法的模型都支持分批次训练模型:训练之后保存,下次加载继续进行训练。如果没有该方法,则不支持保存之后再继续训练。

Mini-Batch KMeans训练时间大概是KMeans训练时间的1/3左右。

二、sklearn.model_selection

function:model_selection.train_test_split(*arrays, **options)
将数据集arrays按照一定比例随机分割成训练集和测试集,返回分割后的训练集和测试集。

import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=42)

参数说明:

  • X, y:待分割的数据集,允许同时分割多个数据集
  • test_size:指定分割比例,test_size是分割之后测试集所占比例
  • random_state:随机数种子,保证多次运行效果一致

三、sklearn.datasets

包含很多数据(如波士顿房屋租赁、鸢尾花分类等),可以直接下载用于训练模型。

samples generator:

  • datasets.make_blobs([n_samples, n_features, …])
    产生各向同性的符合高斯分布的数据点,用于聚类
  • datasets.make_gaussian_quantiles([mean, …])
    创建符合高斯分布的数据集

datasets.make_blobs([n_samples, n_features, …])

创建符合各向同性的高斯分布的数据集,用于聚类模型训练,返回创建好的数据集。

make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None)

参数说明:

  • n_samples:数据集中的样本点数
  • n_features:每个样本的维度,即特征数目
  • centers:int or array of shape [ n_centers, n_features],中心点的数目(默认为3)或指定中心点坐标。
  • cluster_std:样本簇的标准差,默认为1.0
  • center_box:pair of floats(min, max),样本簇的边界,最小值和最大值
  • shuffle:是否打乱顺序,默认打乱
  • random_state:随机数种子

四、sklearn.ensemble 集成算法

class:

随机森林

ensemble.RandomForestRegressor([…])

ensemble.RandomForestClassifier([…])

ensemble.IsolationForest([n_estimators, …])

Bagging

ensemble.BaggingClassifier([base_estimator, …])

ensemble.BaggingRegressor([base_estimator, …])

Adaboost

ensemble.AdaBoostClassifier([…])

ensemble.AdaBoostRegressor([base_estimator, …])

GBDT

ensemble.GradientBoostingClassifier([loss, …])

GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, 
subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, 
min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_split=1e-07, init=None, random_state=None,
 max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort='auto'

参数说明:

  • learning_rate:学习率,默认为0.1
  • n_estimators:基学习器(即子模型)个数,默认为100
  • subsample
  • criterion:划分依据
  • min_samples_split:划分节点所需的最小样本数,默认为2
  • min_samples_leaf
  • max_depth:子模型决策树的最大深度

ensemble.GradientBoostingRegressor([loss, …])

五、sklearn.linear_model

弹性网络

linear_model.ElasticNet([alpha, l1_ratio, …])

linear_model.ElasticNetCV([l1_ratio, eps, …])

linear_model.Lasso([alpha, fit_intercept, …])

linear_model.LinearRegression([…]):最简单的线性回归模型,主要用于

LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)

参数说明:

  • fit_intercept:是否训练截距项,默认训练
  • normalize:数据集X是否标准化,默认不进行标准化
  • copy_X:对数据集X是否拷贝一个副本。若为True,对拷贝的副本X进行训练;若为False,则直接对X进行训练。

※ 一般来说只设置fit_intercept参数,其它参数默认。

linear_model.LogisticRegression([penalty, …]):对数几率回归,主要

linear_model.Ridge([alpha, fit_intercept, …])

linear_model.RidgeClassifier([alpha, …])

六、sklearn.metrics

sklearn.metrics中的方法主要用于评估模型性能,以下方法第一个参数都是样本的真实值,第二个参数都是模型的预测值。

Classification metrics

  • metrics.accuracy_score(y_true, y_pred[, …]):分类的准确率

  • metrics.classification_report(y_true, y_pred):模型分类效果的评估报告

  • metrics.confusion_matrix(y_true, y_pred[, …]):混淆矩阵

  • metrics.f1_score(y_true, y_pred[, labels, …]):F1指标

  • metrics.precision_score(y_true, y_pred[, …]):精确率

  • metrics.recall_score(y_true, y_pred[, …]):召回率

混淆矩阵

sklearn基础学习笔记_第1张图片
设总的样本数为total

  • 准确率(Accuracy):模型预测正确的样本数/总的样本数,( TP + TN ) / total
  • 精确率(Precision):模型预测正确的正例样本数/模型预测为正例的样本数,TP / ( TP + FP )
  • 召回率(Recall): 模型预测正确的正例样本数/真实的正例样本数,TP / ( TP + FN )
    Precision - FP;Recall - FN
  • F值:精确率和召回率的调和平均值,PrecisionRecall2 / ( Precision + Recall )

Regression metrics

  • metrics.mean_absolute_error(y_true, y_pred):MAE,绝对值误差,真实值与预测值之差的总和,值越小表明模型效果越好。

  • metrics.mean_squared_error(y_true, y_pred[, …]):MSE,均方差,值越小(越接近0)表明模型效果越好

  • metrics.r2_score(y_true, y_pred[, …]):R2,表征回归模型的性能,值越接近1 表示效果越好。

###########################################

设置属性,防止中文乱码:
mpl.rcParams[‘font.sans-serif’] = [u’simHei’]
mpl.rcParams[‘axes.unicode_minus’] = Flase

###########################################
~持续更新中······

你可能感兴趣的:(人工智能,算法)