Python学习笔记之:Scikit-Learn机器学习基础

前言

本文是我根据Scikit-learn官方API翻译理解所写,如果有什么地方翻译的不对,欢迎指正!!!

一、监督学习

  1. Generalized Linear Models(广义线性模型)
  2. Linear and Quadratic Discriminant Analysis ( 线性和二次判别分析 )
  3. Kernel ridge regression ( 内核岭回归 )
  4. Support Vector Machines(支持向量机, SVM)
  5. Stochastic Gradient Descent ( 随机梯度下降 )
  6. Nearest Neighbors ( 最近邻 )
  7. Gaussian Processes(高斯过程)
  8. Cross decomposition(交叉分解)
  9. Naive Bayes ( 朴素贝叶斯 )
  10. Decision Trees(决策树)
  11. Ensemble methods(集成方法)
  12. 多分类和多标签算法
  13. 特征选择
  14. 半监督
  15. 等式回归
  16. 概率校准
  17. 神经网络模型(监督)

二、非监督学习

  1. 高斯混合模型
  2. 流形学习
  3. 聚类
  4. 双聚类
  5. 分解成分中的信号(矩阵分解问题)
  6. 协方差估计
  7. 新奇和异常检测
  8. 密度估计
  9. 神经网络模型(无监督)

三、模型选择和评估

  1. 交叉验证:评估估计器性能
  2. 调整估计器的超参数
  3. 模型评估:量化预测的质量
  4. 模型持久化
  5. 验证曲线:绘制分数以评估模型

四、数据集转换

  1. 管道和FeatureUnion:组合估计
  2. 特征提取
  3. 预处理数据
  4. 无监督降维
  5. 随机投影
  6. 内核近似
  7. 成对度量,亲和力和内核
  8. 转换预测目标

五、API函数

1、sklearn.base: Base classes and utility functions(基类和效用函数)

基础类:
base.BaseEstimator:	   scikit学习中所有估计的基础类
base.ClassifierMixin:	   所有分类器的混合类在scikit学习
base.ClusterMixin:	       所有聚类估计器的混合类在scikit学习中
base.RegressorMixin:  	所有回归估计器的混合类在scikit学习
base.TransformerMixin:	 所有变压器的混合类在scikit学习

2、sklearn.cluster: Clustering(聚类)–模块收集流行的无监督聚类算法

聚类:

cluster.AffinityPropagation([damping, ...])		执行亲和度传播数据聚类
cluster.AgglomerativeClustering([...])			集聚聚类
cluster.Birch([threshold, branching_factor, ...])	实现Birch聚类算法
cluster.DBSCAN([eps, min_samples, metric, ...])		从矢量阵列或距离矩阵执行DBSCAN聚类
cluster.FeatureAgglomeration([n_clusters, ...])		聚集特征
cluster.KMeans([n_clusters, init, n_init, ...])		K均值聚类
cluster.MiniBatchKMeans([n_clusters, init, ...])	小批量K均值聚类
cluster.MeanShift([bandwidth, seeds, ...])		使用平坦内核的平均移位聚类
cluster.SpectralClustering([n_clusters, ...])		将聚类应用于对规范化拉普拉斯算子的投影

函数:

cluster.estimate_bandwidth(X[, quantile, ...])	估计与平均移位算法一起使用的带宽
cluster.k_means(X, n_clusters[, init, ...])	K均值聚类算法
cluster.ward_tree(X[, connectivity, ...])	基于特征矩阵的区域聚类
cluster.affinity_propagation(S[, ...])		执行亲和度传播数据聚类
cluster.dbscan(X[, eps, min_samples, ...])	从矢量阵列或距离矩阵执行DBSCAN聚类
cluster.mean_shift(X[, bandwidth, seeds, ...])	使用平坦的内核执行数据的平均移位聚类
cluster.spectral_clustering(affinity[, ...])	将聚类应用于对规范化拉普拉斯算子的投影

3.光谱双聚类算法:

sklearn.cluster.bicluster: Biclustering(双聚类)
类:
SpectralBiclustering([n_clusters, method, ...])	光谱双聚类(Kluger,2003)
SpectralCoclustering([n_clusters, ...])		光谱共聚焦算法(Dhillon,2001)

4.协方差估计模块:

sklearn.covariance: 协方差估计模块
    定义:该sklearn.covariance模块包括方法和算法:
    covariance.EmpiricalCovariance([...])		最大似然协方差估计
    covariance.EllipticEnvelope([...])		用于检测高斯分布数据集中异常值的对象
    covariance.GraphLasso([alpha, mode, tol, ...])	具有l1惩罚估计量的稀疏逆协方差估计
    covariance.GraphLassoCV([alphas, ...])		稀疏逆协方差与交叉验证的l1罚款的选择
    covariance.LedoitWolf([store_precision, ...])	LedoitWolf估计
    covariance.MinCovDet([store_precision, ...])	最小协方差决定因素(MCD):协方差的robust估计
    covariance.OAS([store_precision, ...])		Oracle近似收缩估计
    covariance.ShrunkCovariance([...])		协变量估计与收缩
    covariance.empirical_covariance(X[, ...])	计算最大似然协方差估计
    covariance.ledoit_wolf(X[, assume_centered, .])	估计缩小的Ledoit-Wolf协方差矩阵
    covariance.shrunk_covariance(emp_cov[, ...])	计算对角线上收缩的协方差矩阵
    covariance.oas(X[, assume_centered])		使用Oracle近似收缩算法估计协方差
    covariance.graph_lasso(emp_cov, alpha[, ...])	l1惩罚协方差估计

5.数据集:

sklearn.datasets: Datasets(数据集)
定义:该模块包括用于加载数据集的实用程序,包括加载和获取流行参考数据集的方法。它还具有一些人工数据生成器。

datasets.clear_data_home([data_home])		删除数据家庭缓存的所有内容
datasets.get_data_home([data_home])		返回scikit-learn数据目录的路径
datasets.fetch_20newsgroups([data_home, ...])	加载20个新闻组数据集中的文件名和数据
datasets.fetch_20newsgroups_vectorized([...])	加载20个新闻组数据集并将其转换为tf-idf向量
datasets.load_boston([return_X_y])		加载并返回波士顿房价数据集(回归)
datasets.load_breast_cancer([return_X_y])	加载并返回乳腺癌威斯康星数据集(分类)
datasets.load_diabetes([return_X_y])		加载并返回糖尿病数据集(回归)
datasets.load_digits([n_class, return_X_y])	加载并返回数字数据集(分类)
datasets.load_files(container_path[, ...])	加载具有子文件夹名称类别的文本文件
datasets.load_iris([return_X_y])		加载并返回虹膜数据集(分类)
datasets.fetch_lfw_pairs([subset, ...])		在野外(LFW)对数据集中的标记面的装载程序
datasets.fetch_lfw_people([data_home, ...])	野外(LFW)人物数据集中的标记面的装载程序
datasets.load_linnerud([return_X_y])		加载并返回linnerud数据集(多元回归)
datasets.mldata_filename(dataname)		转换mldata.org文件名中的数据集的原始名称
datasets.fetch_mldata(dataname[, ...])		获取mldata.org数据集
datasets.fetch_olivetti_faces([data_home, ...])	Olivetti的装载机面向AT&T的数据集
datasets.fetch_california_housing([...])	来自StatLib的加州住房数据集的装载机
datasets.fetch_covtype([data_home, ...])	加载封面类型数据集,必要时下载
datasets.fetch_kddcup99([subset, shuffle, ...])	加载并返回kddcup 99数据集(分类)
datasets.fetch_rcv1([data_home, subset, ...])	加载RCV1 multilabel数据集,必要时下载
datasets.load_mlcomp(name_or_id[, set_, ...])	加载从http://mlcomp.org下载的数据集
datasets.load_sample_image(image_name)		加载单个样本图像的numpy数组
datasets.load_sample_images()			加载样品图像进行图像处理
datasets.fetch_species_distributions([...])	来自Phillips等的物种分布数据集的装载机
datasets.load_svmlight_file(f[, n_features, .])	将svmlight / libsvm格式的数据集加载到稀疏的CSR矩阵中
datasets.load_svmlight_files(files[, ...])	从SVMlight格式的多个文件加载数据集
datasets.dump_svmlight_file(X, y, f[, ...])	以svmlight / libsvm文件格式转储数据集

样本生成器:

datasets.make_blobs([n_samples, n_features, ...])	生成用于聚类的各向同性高斯斑点
datasets.make_classification([n_samples, ...])		生成随机n类分类问题
datasets.make_circles([n_samples, shuffle, ...])	在2d中制作一个包含较小圆的大圆
datasets.make_friedman1([n_samples, ...])		产生“Friedman#1”回归问题
datasets.make_friedman2([n_samples, noise, ...])	产生“Friedman#2”回归问题
datasets.make_friedman3([n_samples, noise, ...])	产生“Friedman#3”回归问题
datasets.make_gaussian_quantiles([mean, ...])		通过分位数生成各向同性高斯和标签样本
datasets.make_hastie_10_2([n_samples, ...])		生成Hastie等人使用的二进制分类数据
datasets.make_low_rank_matrix([n_samples, ...])		生成具有钟形奇异值的大多数低阶矩阵
datasets.make_moons([n_samples, shuffle, ...])		使两个交错半圈
datasets.make_multilabel_classification([...])		产生一个随机多标签分类问题
datasets.make_regression([n_samples, ...])		产生随机回归问题
datasets.make_s_curve([n_samples, noise, ...])		生成S曲线数据集
datasets.make_sparse_coded_signal(n_samples, ...)	生成信号作为字典元素的稀疏组合
datasets.make_sparse_spd_matrix([dim, ...])		产生一个稀疏的对称确定正矩阵
datasets.make_sparse_uncorrelated([...])		生成稀疏不相关设计的随机回归问题
datasets.make_spd_matrix(n_dim[, random_state])		产生一个随机对称,正定矩阵
datasets.make_swiss_roll([n_samples, noise, ...])	生成瑞士卷数据集
datasets.make_biclusters(shape, n_clusters)		生成一个具有恒定块对角线结构的阵列,用于二聚体
datasets.make_checkerboard(shape, n_clusters)		生成具有块棋盘结构的数组,用于双向聚集

六、集成方法

扫描二维码关注公众号,回复: 8620533 查看本文章

定义:sklearn.ensemble模块包括用于分类,回归和异常检测的基于集成的方法。

集成方法模块:
ensemble.AdaBoostClassifier([...])			一个AdaBoost分类器
ensemble.AdaBoostRegressor([base_estimator, ...])	AdaBoost回归器
ensemble.BaggingClassifier([base_estimator, ...])	Bagging分类器
ensemble.BaggingRegressor([base_estimator, ...])	Bagging回归器
ensemble.ExtraTreesClassifier([...])			一个额外的树分类器
ensemble.ExtraTreesRegressor([n_estimators, ...])	一个额外的树回归器
ensemble.GradientBoostingClassifier([loss, ...])	梯度提升分类
ensemble.GradientBoostingRegressor([loss, ...])		渐变提升回归
ensemble.IsolationForest([n_estimators, ...])		隔离森林算法
ensemble.RandomForestClassifier([...])			随机森林分类器
ensemble.RandomTreesEmbedding([...])			一个完全随机的树的集成
ensemble.RandomForestRegressor([...])			随机森林回归器
ensemble.VotingClassifier(estimators[, ...])		软投票/多数规则分类器

七、异常和警告模块

定义:sklearn.exceptions模块包括在scikit学习中使用的所有自定义警告和错误类。

异常和警告类:
exceptions.NotFittedError		如果在拟合前使用估计器,则提升异常类
exceptions.ChangedBehaviorWarning	用于通知用户任何行为变化的警告类
exceptions.ConvergenceWarning		捕捉收敛问题的自定义警告
exceptions.DataConversionWarning	警告用于通知代码中发生的隐式数据转换
exceptions.DataDimensionalityWarning	自定义警告,以通知数据维度的潜在问题
exceptions.EfficiencyWarning		用于通知用户效率低下的警告
exceptions.FitFailedWarning		如果在拟合估计器时出现错误,则使用警告类
exceptions.NonBLASDotWarning		点操作不使用BLAS时使用的警告
exceptions.UndefinedMetricWarning	度量无效时使用的警告

八、特征提取模块

定义:sklearn.feature_extraction模块处理原始数据的特征提取。它目前包括从文本和图像中提取特征的方法。

feature_extraction.DictVectorizer([dtype, ...])	将特征值映射列表转换为向量
feature_extraction.FeatureHasher([...])		实现哈希功能,又称哈希技巧

从图像提取特征方法:

定义:该sklearn.feature_extraction.image子模块收集实用程序从图像中提取特征。
feature_extraction.image.img_to_graph(img[, ...])	   像素到像素梯度连接的图形
feature_extraction.image.grid_to_graph(n_x, n_y)	   像素到像素连接的图形
feature_extraction.image.extract_patches_2d(...)	   将2D图像重新整理成一组补丁
feature_extraction.image.reconstruct_from_patches_2d(...)  从所有补丁重构图像
feature_extraction.image.PatchExtractor([...])		   从图像集中提取补丁

从文本提取特征方法:

定义:该sklearn.feature_extraction.text子模块收集实用程序从文本文档建立特征向量。
feature_extraction.text.CountVectorizer([...])	将文本文档的集合转换为令牌计数矩阵
feature_extraction.text.HashingVectorizer([...])将文本文档的集合转换为令牌发生的矩阵
feature_extraction.text.TfidfTransformer([...])	将计数矩阵转换为标准化的tf或tf-idf表示
feature_extraction.text.TfidfVectorizer([...])	将原始文档的集合转换为TF-IDF功能的矩阵

九、特征选择模块
定义:sklearn.feature_selection模块实现特征选择算法。它目前包括单变量筛选方法和递归特征消除算法。

feature_selection.GenericUnivariateSelect([...])	具有可配置策略的单变量特征选择器
feature_selection.SelectPercentile([...])		根据最高分数百分位数选择功能
feature_selection.SelectKBest([score_func, k])		根据k最高分选择功能
feature_selection.SelectFpr([score_func, alpha])	过滤器:根据FPR测试选择低于alpha的p值
feature_selection.SelectFdr([score_func, alpha])	过滤器:为估计的错误发现率选择p值
feature_selection.SelectFromModel(estimator)		元变压器,用于根据重要性权重选择特征
feature_selection.SelectFwe([score_func, alpha])	过滤器:选择对应于同系误差率的p值
feature_selection.RFE(estimator[, ...])			功能排序与递归功能消除
feature_selection.RFECV(estimator[, step, ...])		功能排序与递归功能消除和交叉验证选择最佳数量的功能
feature_selection.VarianceThreshold([threshold])	功能选择器可删除所有低方差特征
feature_selection.chi2(X, y)				计算每个非负特征和类之间的平方统计
feature_selection.f_classif(X, y)			计算提供的样本的方差分析F值
feature_selection.f_regression(X, y[, center])		单变量线性回归测试
feature_selection.mutual_info_classif(X, y)		估计离散目标变量的互信息
feature_selection.mutual_info_regression(X, y)		估计连续目标变量的互信息

十、广义线性模型
定义:sklearn.linear_model模块实现广义线性模型。它包括利用最小角度回归和坐标下降计算的岭回归,贝叶斯回归,套索和弹性网估计。它还实现随机梯度下降相关算法。

linear_model.ARDRegression([n_iter, tol, ...])	贝叶斯ARD回归
linear_model.BayesianRidge([n_iter, tol, ...])	贝叶斯脊回归
linear_model.ElasticNet([alpha, l1_ratio, ...])	线性回归与组合L1和L2先验作为正则化器
linear_model.ElasticNetCV([l1_ratio, eps, ...])	弹性网模型沿正则化路径迭代拟合
linear_model.HuberRegressor([epsilon, ...])	线性回归模型,对离群值是robust
linear_model.Lars([fit_intercept, verbose, ...])最小角度回归模型
linear_model.LarsCV([fit_intercept, ...])	交叉验证的最小二乘回归模型
linear_model.Lasso([alpha, fit_intercept, ...])	线性模型训练用L1作为矫正器(又名拉索)
linear_model.LassoCV([eps, n_alphas, ...])	拉索线性模型,沿正则化路径迭代拟合
linear_model.LassoLars([alpha, ...])		Lasso模型也适合最小角度回归
linear_model.LassoLarsCV([fit_intercept, ...])	使用LARS算法进行交叉验证的Lasso
linear_model.LassoLarsIC([criterion, ...])	Lasso模型适合Lars使用BIC或AIC进行型号选择
linear_model.LinearRegression([...])		普通最小二乘线性回归
linear_model.LogisticRegression([penalty, ...])	Logistic回归(又名logit,MaxEnt)分类器
linear_model.LogisticRegressionCV([Cs, ...])	Logistic回归CV(又名logit,MaxEnt)分类器
linear_model.MultiTaskLasso([alpha, ...])	用L1 / L2混合规范训练的多任务Lasso模型作为正则化器
linear_model.MultiTaskElasticNet([alpha, ...])	用L1 / L2混合规范训练的多任务ElasticNet模型作为正则化程序
linear_model.MultiTaskLassoCV([eps, ...])	多任务L1 / L2 Lasso内置交叉验证
linear_model.MultiTaskElasticNetCV([...])	多任务L1 / L2 ElasticNet内置交叉验证
linear_model.OrthogonalMatchingPursuit([...])	正交匹配追踪模型(OMP)
linear_model.OrthogonalMatchingPursuitCV([...])	交叉验证的正交匹配追踪模型(OMP)
linear_model.PassiveAggressiveClassifier([...])	被动侵略分类器
linear_model.PassiveAggressiveRegressor([C, ...])	被动侵略者
linear_model.Perceptron([penalty, alpha, ...])	在“ 用户指南”中阅读更多内容。
linear_model.RandomizedLasso([alpha, ...])	随机拉索
linear_model.RandomizedLogisticRegression([...])	随机逻辑回归
linear_model.RANSACRegressor([...])		RANSAC(RANdom SAmple Consensus)算法
linear_model.Ridge([alpha, fit_intercept, ...])	具有l2正则化的线性最小二乘法
linear_model.RidgeClassifier([alpha, ...])	分类器使用Ridge回归
linear_model.RidgeClassifierCV([alphas, ...])	里奇分类器内置交叉验证
linear_model.RidgeCV([alphas, ...])		里奇回归与内置交叉验证
linear_model.SGDClassifier([loss, penalty, ...])	线性分类器(SVM,逻辑回归,ao)与SGD训练
linear_model.SGDRegressor([loss, penalty, ...])	通过使用SGD最小化正则化经验损失拟合的线性模型
linear_model.TheilSenRegressor([...])		Theil-Sen估计:强大的多变量回归模型
linear_model.lars_path(X, y[, Xy, Gram, ...])	使用LARS算法计算最小角度回归或套索路径[1]
linear_model.lasso_path(X, y[, eps, ...])	计算具有坐标下降的Lasso路径
linear_model.lasso_stability_path(X, y[, ...])	基于随机拉索估计的稳定性路径
linear_model.logistic_regression_path(X, y)	为正则化参数列表计算逻辑回归模型
linear_model.orthogonal_mp(X, y[, ...])		正交匹配追踪(OMP)
linear_model.orthogonal_mp_gram(Gram, Xy[, ...])革命正交匹配追踪(OMP)

十一、高斯混合模型
定义:sklearn.mixture模块实现混合建模算法。

mixture.GaussianMixture([n_components, ...])	高斯混合
mixture.BayesianGaussianMixture([...])		高斯混合变分贝叶斯估计

十二、多输出回归和分类
sklearn.naive_bayes模块实现朴素贝叶斯算法。这些是基于应用贝叶斯定理与强(天真)特征独立假设的监督学习方法。

multioutput.MultiOutputRegressor(estimator)	多目标回归
multioutput.MultiOutputClassifier(estimator)	多目标分类

十三、神经网络模型
定义:sklearn.neural_network模块包括基于神经网络的模型。

neural_network.BernoulliRBM([n_components, ...])	伯努利限制玻尔兹曼机(RBM)
neural_network.MLPClassifier([...])	多层感知器分类器
neural_network.MLPRegressor([...])	多层感知器回归

十四、概率校准(sklearn.calibration模块)

calibration.CalibratedClassifierCV([...])	等渗回归或乙状结构的概率校准
calibration.calibration_curve(y_true, y_prob)	计算校准曲线的真实和预测概率

十五、交叉分解(sklearn.cross_decomposition模块)

cross_decomposition.PLSRegression([...])	PLS回归
cross_decomposition.PLSCanonical([...])		PLSCanonical实现了原始Wold算法的2块规范PLS [Tenenhaus 1998] p.204,在[Wegelin 2000]中被称为PLS-C2A
cross_decomposition.CCA([n_components, ...])	CCA规范相关分析
cross_decomposition.PLSSVD([n_components, ...])	部分最小二乘SVD

十六、管道(sklearn.pipeline模块)
定义:sklearn.pipeline模块实现实用程序来构建复合估计器,作为变换链和估计器链。

pipeline.Pipeline(steps)			最终估计量的变换管道
pipeline.FeatureUnion(transformer_list[, ...])	连接多个变压器对象的结果
pipeline.make_pipeline(\*steps)			从给定的估计量构建管道
pipeline.make_union(\*transformers)		从给定的变压器构造一个FeatureUnion

十七、预处理和规范化
定义:sklearn.preprocessing模块包括缩放,定心,归一化,二值化和插补方法。

preprocessing.Binarizer([threshold, copy])	根据阈值对数据进行二值化(将特征值设置为0或1)
preprocessing.FunctionTransformer([func, ...])	从任意可调用的构造一个变压器
preprocessing.Imputer([missing_values, ...])	用于完成缺失值的插补变压器
preprocessing.KernelCenterer			中心一个内核矩阵
preprocessing.LabelBinarizer([neg_label, ...])	以一对一的方式对标签进行二值化
preprocessing.LabelEncoder			在0和n_classes-1之间编码标签
preprocessing.MultiLabelBinarizer([classes, .])	在迭代迭代和多标签格式之间进行转换
preprocessing.MaxAbsScaler([copy])		按每个特征的最大绝对值进行缩放
preprocessing.MinMaxScaler([feature_range, copy])	通过将每个功能缩放到给定范围来转换功能
preprocessing.Normalizer([norm, copy])		将样品归一化为单位范数
preprocessing.OneHotEncoder([n_values, ...])	使用一个单一的一个K方案来编码分类整数特征
preprocessing.PolynomialFeatures([degree, ...])	生成多项式和交互特征
preprocessing.RobustScaler([with_centering, .])	使用对异常值可靠的统计信息来缩放特征
preprocessing.StandardScaler([copy, ...])	通过删除平均值和缩放到单位方差来标准化特征
preprocessing.add_dummy_feature(X[, value])	增强数据集,带有额外的虚拟功能
preprocessing.binarize(X[, threshold, copy])	数组式或scipy.sparse矩阵的布尔阈值
preprocessing.label_binarize(y, classes[, ...])	以 one-vs-all 的方式对标签进行二值化
preprocessing.maxabs_scale(X[, axis, copy])	将每个特征缩放到[-1,1]范围,而不破坏稀疏度
preprocessing.minmax_scale(X[, ...])		通过将每个功能缩放到给定范围来转换功能
preprocessing.normalize(X[, norm, axis, ...])	将输入向量分别缩放到单位范数(向量长度)
preprocessing.robust_scale(X[, axis, ...])	沿着任何轴标准化数据集
preprocessing.scale(X[, axis, with_mean, ...])	沿着任何轴标准化数据集

十八、预测器的选择
Scikit-learn提供了三种稳健回归的预测器(estimator): RANSAC , Theil Sen 和 HuberRegressor

1.HuberRegressor 一般快于 RANSAC 和 Theil Sen ,除非样本数很大,即 n_samples >> n_features 。 这是因为 RANSAC 和 Theil Sen 都是基于数据的较小子集进行拟合。但使用默认参数时, Theil Sen 和 RANSAC 可能不如 HuberRegressor 鲁棒。
2.RANSAC 比 Theil Sen 更快,在样本数量上的伸缩性(适应性)更好。
	RANSAC 能更好地处理y方向的大值离群点(通常情况下)。
3.Theil Sen 能更好地处理x方向中等大小的离群点,但在高维情况下无法保证这一特点。
发布了38 篇原创文章 · 获赞 10 · 访问量 7208

猜你喜欢

转载自blog.csdn.net/chenxuezhong0413/article/details/83585255
今日推荐