Python机器学习工具:Scikit-Learn介绍与实践

简介:

Scikit-learn 简介

官方的解释很简单: Machine Learning in Python, 用python来玩机器学习。

什么是机器学习
机器学习关注的是:计算机程序如何随着经验积累自动提高性能。而最大的吸引力在于,不需要写任何与问题相关的特定代码,泛型算法就能告诉你一些关于数据的秘密。

Scikit-learn的优点
1、构建于现有的NumPy(基础n维数组包),SciPy(科学计算基础包), matplotlib(全面的2D/3D画图),IPython(加强的交互解释器),Sympy(Symbolic mathematics), Pandas(数据结构和分析)之上,做了易用性的封装。
2、简单且高效的数据挖掘、数据分析的工具。
3、对所有人开放,且在很多场景易于复用。
4、BSD证书下开源。

Scikit-learn的生态
Python
python是一门简单易学的语言,语法要素不多,对于只关心机器学习本身非软件开发的人员,python语言层面的东西基本是不需要关心的。

Jupyter
http://nbviewer.jupyter.org/ 提供了一种便利的方式去共享自己或是别人的计算成果,以一种之前单单共享代码不同的交互的方式。scikit-learn官网上面大量的例子也是以这种方式展示,使用者不仅看到了代码的使用方式,还看到了代码的结果,如果自己搭建了jupyter server的话,导入notebook还可以直接在浏览器中在其中上下文任意处修改,大大增加了学习效率。

Scikit-learn 的主要内容
Scikit-learn的算法地图


按照上图 scikit-learn提供的主要功能主要关注与数据建模,而非加载、操作、总结数据,这些任务可能NumPy、Pandas就已经足够了。为此scikit-learn 主要提供了以下功能:

1、测试数据集,sklearn.datasets模块提供了乳腺癌、kddcup 99、iris、加州房价等诸多开源的数据集
2、降维(Dimensionality Reduction):为了特征筛选、统计可视化来减少属性的数量。
3、特征提取(Feature extraction): 定义文件或者图片中的属性。
4、特征筛选(Feature selection): 为了建立监督学习模型而识别出有真实关系的属性。
5、按算法功能分类,分为监督学习:分类(classification)和回归(regression),以及非监督学习:聚类(clustering)。sklearn提供了很全面的算法实现,详细算法清单http://scikit-learn.org/stable/modules/classes.html。
6、聚类(Clustring):使用KMeans之类的算法去给未标记的数据分类。
7、交叉验证(Cross Validation):去评估监督学习模型的性能。
8、参数调优(Parameter Tuning):去调整监督学习模型的参数以获得最大效果。
9、流型计算(Manifold Learning):去统计和描绘多维度的数据

常用算法的大致介绍

分类 Classification

1、适用范围:用作训练预测已经标记的数据集的类别. 监督学习的代表。
2、常用算法对比


3、文章测试了179种分类模型在UCI所有的121个数据上的性能,发现Random Forests 和 SVM 性能最好。

回归 Regression

1、适用范围:
回归是用于估计两种变量之间关系的统计过程,回归分析可以帮助我们理解当任意一个自变量变化,另一个自变量不变时,因变量变化的典型值。
最常见的是,回归分析能在给定自变量的条件下估计出因变量的条件期望。 (举个例子,在二维的坐标系中,根据已有的坐标点去推导x、y轴的函数关系,既一元n次方程。)

2、常用算法对比:

优点:直接、快速,知名度高
缺点:要求严格的假设,需要处理异常值

集成算法 Ensemble Algorithms


上图是单独用决策树来做回归任务去预测数据,但是反映了决策树虽然易于解释理解之外会有一些预测上的缺点,总结而言是趋向过拟合,可能或陷于局部最小值中、没有在线学习,所以下图引入了AdaBoost集成算法来增加预测的可靠性,由此引出了集成算法的优点:

1、集成方法是由多个较弱的模型集成模型组,其中的模型可以单独进行训练,并且它们的预测能以某种方式结合起来去做出一个总体预测。
2、当先最先进的预测几乎都使用了算法集成。它比使用单个模型预测出来的结果要精确的多。

但是如何找出可结合的弱模型、以及结合的方式又称为了繁重的维护工作。

聚类 Clustering

1、适用范围:
是在没有标记的情况下去分类数据,使数据变得有意义, 如果已知分类分类的个数,Kmeans算法会更容易得出效果。

2、常用算法对比:


该图中颜色是聚类的结果,而非标记, 各算法的分类结果都可以根据输入参数调优,只是为了展示聚类的适用范围适合有特征的数据类型,对于最下一行的几乎均匀的数据几乎没有任何意义。

Scikit-learn进行计算的主要步骤

1、数据获取、预处理。
2、可选的降维过程.因为原始数据的维度比较大, 所以需要先找出真正跟预测目标相关的属性。
3、学习以及预测的过程。
4、反复学习的过程。增加样本、调优参数、换算法各种方式去提供预测的准确率。

Scikit-learn 的简单使用示例

决策树示例:

 from sklearn import datasets

  from sklearn import metrics

  from sklearn.tree import DecisionTreeClassifier

    # 读取 iris 数据集

  dataset = datasets.load_iris()

    # 采用CART模型

  model = DecisionTreeClassifier()

  model.fit(dataset.data, dataset.target)

  print(model)

    # 预测

  expected = dataset.target

  predicted = model.predict(dataset.data)

    # 统计

  print(metrics.classification_report(expected, predicted))

  print(metrics.confusion_matrix(expected, predicted))

输出: 

` 
precision recall f1-score support 
0 1.00 1.00 1.00 50 
1 1.00 1.00 1.00 50 
2 1.00 1.00 1.00 50 
avg / total 1.00 1.00 1.00 150 
[[50 0 0] 
[ 0 50 0] 
[ 0 0 50]] 

引用

Quick Start Tutorial:http://scikit-learn.org/stable/tutorial/basic/tutorial.html
User Guide:http://scikit-learn.org/stable/user_guide.html
API Reference:http://scikit-learn.org/stable/modules/classes.html
Example Gallery:http://scikit-learn.org/stable/auto_examples/index.html
Scikit-learn: Machine Learning in Python:http://jmlr.org/papers/v12/pedregosa11a.html
API design for machine learning software: experiences from the scikit-learn project:
http://arxiv.org/abs/1309.0238


原文发布时间为:2017-03-16
本文作者:toyld
本文来自云栖社区合作伙伴“ Python中文社区”,了解相关信息可以关注“ Python中文社区”微信公众号
相关文章
|
机器学习/深度学习 人工智能 JSON
【解决方案】DistilQwen2.5-R1蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式的机器学习和深度学习平台,对DistilQwen2.5-R1模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过 PAI-ModelGallery 轻松实现 Qwen2.5 系列模型的训练、评测、压缩和快速部署。本文详细介绍在 PAI 平台使用 DistilQwen2.5-R1 蒸馏模型的全链路最佳实践。
|
人工智能 JSON 算法
【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen 系列是阿里云人工智能平台 PAI 推出的蒸馏语言模型系列,包括 DistilQwen2、DistilQwen2.5、DistilQwen2.5-R1 等。本文详细介绍DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践。
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
1531 12
Scikit-learn:Python机器学习的瑞士军刀
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
数据采集 人工智能 API
生物医药蛋白分子数据采集:支撑大模型训练的技术实践分享
作为生物信息学领域的数据工程师,近期在为蛋白质相互作用预测AI大模型构建训练集时,我面临着从PDB、UniProt等学术数据库获取高质量三维结构、序列及功能注释数据的核心挑战。通过综合运用反爬对抗技术,成功突破了数据库的速率限制、验证码验证等反爬机制,将数据采集效率提升4倍,为蛋白质-配体结合预测模型训练提供了包含10万+条有效数据的基础数据集,提高了该模型预测的准确性。
853 1
|
机器学习/深度学习 人工智能 边缘计算
DistilQwen2.5蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen2.5 是阿里云人工智能平台 PAI 推出的全新蒸馏大语言模型系列。通过黑盒化和白盒化蒸馏结合的自研蒸馏链路,DistilQwen2.5各个尺寸的模型在多个基准测试数据集上比原始 Qwen2.5 模型有明显效果提升。这一系列模型在移动设备、边缘计算等资源受限的环境中具有更高的性能,在较小参数规模下,显著降低了所需的计算资源和推理时长。阿里云的人工智能平台 PAI,作为一站式的机器学习和深度学习平台,对 DistilQwen2.5 模型系列提供了全面的技术支持。本文详细介绍在 PAI 平台使用 DistilQwen2.5 蒸馏小模型的全链路最佳实践。
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
844 14
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
850 1
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
1865 0

热门文章

最新文章

推荐镜像

更多