Scikit入门指南
作者|Rebecca Vickery 编译|VK 来源|Towards Datas Science
scikit-learn是2007年作为Googles Summer代码项目开发的,现在被广泛认为是最流行的机器学习Python库。
为什么这个库被认为是机器学习项目的最佳选择之一,特别是在生产系统中,有许多原因。这些包括但不限于以下内容。
它对库的开发有很高的支持和严格的管理,这意味着它是一个非常健壮的工具。
有一个清晰、一致的代码风格,确保机器学习代码易于理解和可复制,同时也大大降低了编写机器学习模型的门槛。
它受到第三方工具的广泛支持,因此可以丰富功能以适应各种用例。
如果你正在学习机器学习,那么Scikit learn可能是开始学习的最佳库。它的简单性意味着它相当容易掌握,通过学习如何使用它,你还可以很好地掌握典型的机器学习工作流中的关键步骤。
下面这篇文章是对该工具的初学者友好的介绍,应该能让你对开发一个简单的机器学习模型有足够的了解。
要安装Scikit的最新版本,请运行以下命令。
pip install scikit-learn
本文中的代码示例运行在可以直接从Scikit-learn api导入的经典wine数据集上。
from sklearn.datasets import load_wineX,y = load_wine(return_X_y=True)
Estimators
Scitkit学习库提供了大量的预构建算法来执行有监督和无监督的机器学习。它们通常被称为Estimators。
你为你的项目选择的Estimators将取决于你拥有的数据集和你试图解决的问题。Scikit学习文档提供了如下所示的图表,帮助你确定哪种算法适合你的任务。
Scikit learn之所以能如此直接地使用,是因为无论你使用的模型或算法是什么,用于模型训练和预测的代码结构都是相同的。
为了说明这一点,让我们通过一个例子。
假设你正在处理一个回归问题,并希望训练一个线性回归算法,并使用得到的模型进行预测。使用Scikit learn的第一步是调用logistic回归Estimator并将其另存为对象。下面的示例调用该算法并将其保存为一个名为lr的对象。
from sklearn.linear_model import LogisticRegressionlr = LogisticRegression()
下一步是根据一些训练数据拟合模型。这是使用fit()方法执行的。我们在特征和目标数据调用lr.fit(),并将生成的模型另存为名为model的对象。在下面的例子中,我也用train方法将数据集分割成测试集。
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)model = lr.fit(X_train, y_train)
下一步,我们使用模型和predict()方法来预测以前看不到的数据。
predictions = model.predict(X_test)
如果我们现在要使用Scitkit learn执行不同的任务,比如说,我们想训练一个随机森林分类器。代码看起来非常相似,并且具有相同的步骤数。
from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier()
rf_model = rf.fit(X_train, y_train)
rf_predictions = rf_model.predict(X_test)
这种一致的代码结构使得开发机器学习模型非常直接,而且生成的代码具有很高的可读性和可重复性。
预处理
在大多数实际的机器学习项目中,你使用的数据不一定准备好训练模型。你很可能首先需要执行一些数据预处理和转换步骤,例如处理缺失值、将类别数据转换为数值或应用特征缩放。
scikitlearn有内置的方法来执行这些预处理步骤。例如,SimpleImputer()使用你选择的方法填充缺少的值。
from sklearn.impute import SimpleImputerimputer = SimpleImputer(strategy='mean')
X_train_clean = imputer.fit(X_train)
Scikit学习文档在这里列出了数据预处理的完整选项。
评估
一旦一个模型被训练过,你需要衡量这个模型在预测新数据方面有多好。此步骤称为模型评估,你选择的度量将由你尝试解决的任务确定。例如,通常在回归问题中,你可以选择RMSE,而对于分类,你可以选择F1分数。
所有Estimator都包含一个score()方法,该方法返回与所执行的机器学习任务最相关的默认度量。
Scikit learn还提供了一组度量函数,这些函数为模型提供了更详细的评估。例如,对于分类任务,库有一个分类报告,它提供精度、召回率、F1分数和总体准确度。
分类报告代码和输出如下所示。
from sklearn.metrics import classification_reportprint(classification_report(rf_predictions, y_test))
模型优化
Scikit学习库中的所有Estimator都包含一系列参数,其中有多个选项。为特定算法选择的值将影响最终模型的性能。例如,使用RandomForestClassifier,可以将树的最大深度设置为可能的任何值,并且根据你的数据和任务,此参数的不同值将产生不同的结果。
这种尝试不同参数组合以找到最佳组合的过程称为超参数优化。
Scikit learn提供了两个工具来自动执行此任务,GridSearchCV实现了一种称为穷举网格搜索的技术,RandomizedSearchCV执行随机参数优化。
下面的示例使用GridSearchCV为RandomForestClassifier查找最佳参数。输出显示在代码下面。
param_grid = { 'n_estimators': [200, 500],'max_features': ['auto', 'sqrt', 'log2'],'max_depth' : [4,5,6,7,8],'criterion' :['gini', 'entropy']
}
from sklearn.model_selection import GridSearchCV
CV = GridSearchCV(rf, param_grid, n_jobs= 1)CV.fit(X_train, y_train)
print(CV.best_params_)
print(CV.best_score_)
管道
Scikit-learn包以管道的形式提供了更方便的代码封装形式。此工具使所有预处理任务都可以与分类器步骤链接在一起,因此只需对单个管道对象调用fit()或predict()即可执行工作流中的所有步骤。
这使得代码具有很高的可读性,并减少了机器学习工作流中的重复步骤。
为了创建管道,我们首先在下面的代码中定义我称为pipe的对象中的步骤。然后我们可以简单地调用这个对象的fit来训练模型。管道对象还可以用于对新数据进行预测。
from sklearn.pipeline import Pipeline
pipe = Pipeline([('imputer', SimpleImputer()), ('rf', RandomForestClassifier())])
pipeline_model = pipe.fit(X_train, y_train)
pipeline_model.score(X_test, y_test)
原文链接:https://towardsdatascience.com/a-beginners-guide-to-scikit-learn-14b7e51d71a4
欢迎关注磐创AI博客站: http://panchuang.net/
sklearn机器学习中文官方文档: http://sklearn123.com/
欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/
Scikit入门指南相关推荐
- BERT模型超酷炫,上手又太难?请查收这份BERT快速入门指南!
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | GitHub 作者 | Jay Alammar 转自 | 机器之心 如 ...
- BERT模型超酷炫,上手又太难?请查收这份BERT快速入门指南
2019-12-31 10:50:59 选自GitHub 作者:Jay Alammar 参与:王子嘉.Geek AI 如果你是一名自然语言处理从业者,那你一定听说过最近大火的 BERT 模型.本文是一 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- Maven入门指南⑦:Maven的生命周期和插件
Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...
- UE4风格化场景设计入门指南 Stylized Station – The Environment Artist’s Survival Kit
持续时间13h 1920X1080 .ts 包含项目文件 大小解压后:4.9G 语言:英语+中文字幕(人工校对) 标题:风格化的车站--环境艺术家的生存工具包 信息: 环境艺术很难. 尤其是作为初学者 ...
- 游戏风格化角色创建入门指南视频教程
游戏风格化角色创建入门指南视频教程 时间 33小时 包括项目文件 1920X1080 MP4 语言:英语+中文字幕(根据原英文字幕机译更准确)+原英文字幕 游戏中的风格化角色创建入门指南 百度一下 ...
- mongoDB 入门指南、示例
http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南.示例 上一篇:简单介绍mongoDB 一.准备工作 ...
- 智能合约和区块链技术:入门指南
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约和区块链技术:入门指南 多年前,在没有数字合约和区块链技术存在的情况下,双方的合约往往以传统的方式进行.在加密货 ...
- 数据分析从头学_数据新闻学入门指南:让我们从头开始构建故事
数据分析从头学 by Mina Demian 由Mina Demian 数据新闻学入门指南:让我们从头开始构建故事 (A Beginner's Guide to Data Journalism: Le ...
最新文章
- 电脑显示没有被指定在上运行_win10系统运行程序提示“dll没有被指定在windows上运行”的办法...
- 马尔科夫随机场的基本概念
- 使用wamp访问localhost时查看项目地址不对
- java排序的几种方法
- linux 分布式 程序管理,linux--------------git分布式系统项目管理(1)
- IE 8 下面的垂直水平居中
- [转]将西部数据 My Passport Wireless 移动存储连接到任何支持的云存储上
- python编程(编写opengl程序)
- bzoj 3676: [Apio2014]回文串
- 如何利用ECRS原则进行线平衡改善?
- 蒙特卡洛方法的应用——解决“彩色砖块”问题
- 华为修改优先级命令_华为交换机优先级配置
- ElasticSearch教程——数据一致性
- OSChina 娱乐弹弹弹——周一至周五,汗滴禾下土
- Screw导出数据库表信息
- (五)什么是软件架构视图 4+1视图
- API Design for ios 译文
- 如何提高内存卡的读写速度
- UCK将私钥硬件化 是数字资产安全储存的又一次革新
- 安卓终端神器Termux (后面还有Termux常用的快捷键,妥妥干货分享,记得点赞收藏哦!)