一、Sklearn简介

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

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

先介绍下sklearn内的模块组织算法类的顶层设计图

二、三大模块

1、监督学习(supervised learning)

1.

  1. neighbors:近邻算法
  2. svm:支持向量机
  3. kernel-ridge:核——岭回归
  4. discriminant_analysis:判别分析
  5. linear_model:广义线性模型

2.

  1. ensemle:集成方法
  2. tree:决策树
  3. naive_bayes:朴素贝叶斯
  4. cross_decomposition:交叉分解
  5. gaussian_process:高斯过程

3.

  1. neural_network:神经网络
  2. calibration:概率校准
  3. isotonic:保序回归
  4. feature_selection:特征选择
  5. multiclass:多类多标签算法

以上的每个模块都包括多个算法,在调用时直接import即可,譬如:

from sklearn.svm import SVC
svc = SVC()
from sklearn import datasets#引入数据集,sklearn包含众多数据集
from sklearn.model_selection import train_test_split#将数据分为测试集和训练集
from sklearn.neighbors import KNeighborsClassifier#利用邻近点方式训练数据

无监督学习(unsupervised learning)

1.

  1. decomposition:矩阵因子分解
  2. cluster:聚类
  3. manifold:流形学习
  4. mixture:高斯混合模型

2.

  1. neural_network:无监督神经网络
  2. density:密度估计
  3. covariance:协方差估计

使用方式同上。

数据变换

1.

  1. feature_extraction:特征抽取
  2. feature_selection:特征选择
  3. preprocess:预处理

2.

  1. random_projection:随机投影
  2. kernel_approximation:核逼近
  3. pipline:管道流(这个严格说不算是数据变换模块)

三、算法类的顶层设计图

  1. baseEstimator:所有评估器的父类
  2. ClassifierMixin:所有分类器的父类,其子类必须实现一个score函数
  3. RegressorMixin:所有回归器的父类,其子类必须实现一个score函数
  4. ClusterMixin:所有聚类的父类,其子类必须实现一个fit_predict函数
  5. BiClusterMixin:
  6. TransformerMixin:所有数据变换的父类,其子类必须实现一个fit_transform函数
  7. DensityMixin:所有密度估计相关的父类,其子类必须实现一个score函数
  8. MetaEsimatorMixin:可能是出于兼容性考虑,看名字就能知道,目前里面没有内容

我们以svmcluster为例,介绍其继承关系图:

svm

这里SVC即support vector classifier,SVR即support vector regression,svm既可以作为分类器,也可以作为回归器,所以,它们分别继承实现了ClassifierMixin和RegressorMixin。

cluster

这里以MeanShift和KMeans为例,可以看到KMeans实现了TransformerMixin类,因此它有一个transform方法。

四、统一的API接口

在sklearn里面,我们可以使用完全一样的接口来实现不同的机器学习算法,通俗的流程可以理解如下:

  1. 数据加载和预处理
  2. 定义分类器(回归器等等),譬如svc = svm.svc()
  3. 用训练集对模型进行训练,只需调用fit方法,svc.fit(X_train, y_train)
  4. 用训练好的模型进行预测:y_pred=svc.predict(X_test)
  5. 对模型进行性能评估:svc.score(X_test, y_test)

模型评估中,可以通过传入一个score参数来自定义评估标准,该函数的返回值越大代表模型越好。sklearn有一些预定义的score方法,这些方法名在sklearn.metrics.SCORERS中定义,调用时只需传入相应的字符串即可,可以通过如下方式获取到所有预定义的方法名:

from sklearn.metrics import SCORERS
for i in SCORERS.keys():print(i)

机器学习Scikit-Learn模块详解相关推荐

  1. 基于spark mllib_Spark高级分析指南 | 机器学习和分析流程详解(下)

    - 点击上方"中国统计网"订阅我吧!- 我们在Spark高级分析指南 | 机器学习和分析流程详解(上)快速介绍了一下不同的高级分析应用和用力,从推荐到回归.但这只是实际高级分析过程 ...

  2. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  3. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. Python3.5 queue 模块详解 和 进程间通讯

    queue - A synchronized queue class:https://docs.python.org/3/library/queue.html 菜鸟教程 - Python3 多线程:h ...

  5. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  6. 【ES6】Module模块详解

    [ES6]Module模块详解 一.Module的由来 二.严格模式 三.export命令 四.import命令 查看更多ES6教学文章: 参考文献 引言:由于两个JS文件之间相互使用必须通过一个ht ...

  7. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

    [机器学习基本理论]详解最大似然估计(MLE).最大后验概率估计(MAP),以及贝叶斯公式的理解 https://mp.weixin.qq.com/s/6H0gmMWvTExySMraroLVlQ 最 ...

  8. 【机器学习基本理论】详解最大后验概率估计(MAP)的理解

    [机器学习基本理论]详解最大后验概率估计(MAP)的理解 https://mp.weixin.qq.com/s/dQxN46wEbFrpvV369uOHdA 最大似然估计(Maximum likeli ...

  9. python常用内置模块-Python常用内置模块之xml模块(详解)

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  10. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

最新文章

  1. 人工智能时代的数据中心该怎么建?腾讯给出了自己的答案
  2. java的final也并不是那么高冷
  3. GRpc-Go使用笔记
  4. 用例图(use case)
  5. 安迈云加入GDCA全球分布式云联盟,携手业内共建新生态
  6. Qt文档阅读笔记-对JSON Save Game官方实例解析
  7. CentOS+Nginx一步一步开始配置负载均衡
  8. 大数据(3)---分布式文件系统HDFS 介绍
  9. 8188eu usbwifi模块的ap模式,rtl8188_hostapd
  10. matlab z变换 差分,用matlab绘制差分方程Z变换
  11. 金蝶KIS专业版V14.1下载链接,金蝶KIS专业版V14.1新增功能介绍 安装包下载地址
  12. 苹果IOS企业开发者账号怎么申请——苹果账号申请记录(未完待续)
  13. 沈向洋回归,从微软独立的小冰要弯道超车了
  14. 怎么查看笔记本内存条型号_内存条,图文告诉您怎么查看内存条的型号
  15. 数据分析实战项目2:优衣库销售数据分析
  16. Jekyll+GitHub搭建个人博客
  17. 【BlockingQueue】BlockingQueue接口方法说明和区别
  18. excel如何拆分数据
  19. SQL注入之order by注入与limit注入
  20. JavaFX官方文档

热门文章

  1. Avro 序列化操作原理与应用
  2. JS让本地图片预览不再难-jquery插件
  3. CentOS7和win7双系统启动项
  4. C代码在SDK编辑中的使用————(一)
  5. awk命令的使用案列
  6. Linux的crond的配置流程,Linux之定时任务Crond详解
  7. php二叉排序树,二叉排序树(建树)
  8. 三维点云学习(2)中-Kd-tree (k-dimensional tree)
  9. 使用 google_breakpad 分析 Electron 崩溃日志文件
  10. LeetCode-50:关于浮点型数字求高次幂的高效运算