Scikit-learn是使用最广泛的Python机器学习库之一。 它具有标准化和简单的界面,用于预处理数据以及模型训练,优化和评估。

该项目最初由David Cournapeau开发的Google Summer of Code项目开始,并于2010年首次公开发布。自创建以来,该库已发展成为一个丰富的生态系统,可用于开发机器学习模型。

随着时间的推移,该项目开发了许多方便的功能,从而增强了其易用性。 在本文中,我将给大家介绍你可能不知道的10个最有用的功能。

1. Scikit-learn具有内置数据集

Scikit-learn API内置了各种现实数据集,访问调用只需要一行代码,如果你正在学习或者想尝试新功能,它们将非常有用。

你还可以使用生成器:回归 make_regression(),聚类 make_blobs()和分类 make_classification()等生成综合数据集。

# 玩具回归数据集加载from sklearn.datasets import load_bostonX,y = load_boston(return_X_y = True)# 综合回归数据集加载from sklearn.datasets import make_regressionX,y = make_regression(n_samples=10000, noise=100, random_state=0)

2.第三方公共数据集也很容易获得

如果你想直接通过Scikit-learn访问各种公开可用的数据集,这里有一个方便的功能可以让你直接从 openml.org 网站导入数据。该网站包含了21,000多种用于机器学习项目的数据集。

from sklearn.datasets import fetch_openmlX,y = fetch_openml("wine", version=1, as_frame=True, return_X_y=True)

3.有现成的分类器来训练基线模型

在开发机器学习模型时,最明智的做法是先创建一个基线模型。 本质上,该模型应该是“虚拟”模型,例如始终预测最频繁发生的类的模型。这里提供了一个基准来作为“智能”模型基准的基准,这样你就可以确保模型性能优于随机结果。

Scikit学习包括用于分类任务的 DummyClassifier()和用于基于回归问题的 DummyRegressor()。

from sklearn.dummy import DummyClassifier#在葡萄酒数据集上拟合模型并返回模型分数dummy_clf = DummyClassifier(strategy="most_frequent", random_state=0)dummy_clf.fit(X, y)dummy_clf.score(X, y)

4.Scikit learn有自己的绘图API

Scikit learn有一个内置的绘图API,我们可以在不导入任何其他库的情况下,就能可视化模型性能。包括以下绘图工具:部分相关图、混淆矩阵、精确调用曲线和ROC曲线。

import matplotlib.pyplot as plt from sklearn import metrics, model_selectionfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import load_breast_cancerX,y = load_breast_cancer(return_X_y = True)X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)clf = RandomForestClassifier(random_state=0)clf.fit(X_train, y_train)metrics.plot_roc_curve(clf, X_test, y_test)plt.show()

5. Scikit-learn具有内置的数据集

仅使用最佳数据集或通过删除冗余数据来训练模型并提高模型性能的技术,此过程称为特征选择。

Scikit-learn具有许多执行数据选择的数据集。例如 SelectPercentile(),该方法根据所选的统计方法选择性能最好的X百分位特征进行评分。

from sklearn import model_selectionfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import load_winefrom sklearn.pipeline import Pipelinefrom sklearn.preprocessing import StandardScalerfrom sklearn.feature_selection import SelectPercentile, chi2X,y = load_wine(return_X_y = True)X_trasformed = SelectPercentile(chi2, percentile=60).fit_transform(X, y)

6.机器学习工作流程中存在一条管道,允许我们将所有步骤连接在一起

除了提供各种用于机器学习的算法之外,Scikit-learn 还具有用于预处理和转换数据的一系列功能。 为了促进机器学习工作流程的可重复性和简化性,Scikit-learn 创建了管道,让我们可以将大量预处理步骤与模型训练阶段连接在一起。

管道将工作流中的所有步骤存储为单个实体,可以通过 fit 和 predict 方法调用该实体。 在管道对象上调用 fit 方法时,预处理步骤和模型训练会自动执行。

from sklearn import model_selectionfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import load_breast_cancerfrom sklearn.pipeline import Pipelinefrom sklearn.preprocessing import StandardScalerX,y = load_breast_cancer(return_X_y = True)X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)# 将变量与模型联系在一起pipe = Pipeline([('scaler', StandardScaler()), ('rf', RandomForestClassifier())])pipe.fit(X_train, y_train)pipe.score(X_test, y_test)

7.ColumnTransformer 可以对不同的特性应用不同的预处理

在许多数据集中,会有不同类型的特性,需要应用不同的预处理步骤。例如,可能有分类数据和数字数据的混合,我们希望可以通过一个热编码将分类数据转换为数字,并缩放数字变量。

Scikit-learn 管道有一个名为ColumnTransformer的函数,我们可以通过索引或指定列名来轻松指定要对哪些列应用做适当的预处理。

from sklearn import model_selectionfrom sklearn.linear_model import LinearRegressionfrom sklearn.datasets import fetch_openmlfrom sklearn.compose import ColumnTransformerfrom sklearn.pipeline import Pipelinefrom sklearn.impute import SimpleImputerfrom sklearn.preprocessing import StandardScaler, OneHotEncoder# 加载同时包含分类和数字特征的auto93数据集X,y = fetch_openml("auto93", version=1, as_frame=True, return_X_y=True)# 创建数字和分类特征列表 numeric_features = X.select_dtypes(include=['int64', 'float64']).columnscategorical_features = X.select_dtypes(include=['object']).columnsX_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)# 创建数字和分类转换器以执行预处理步骤numeric_transformer = Pipeline(steps=[    ('imputer', SimpleImputer(strategy='median')),    ('scaler', StandardScaler())])categorical_transformer = Pipeline(steps=[    ('imputer', SimpleImputer(strategy='constant', fill_value='missing')),    ('onehot', OneHotEncoder(handle_unknown='ignore'))])# 使用ColumnTransformer应用于正确的功能preprocessor = ColumnTransformer(    transformers=[        ('num', numeric_transformer, numeric_features),        ('cat', categorical_transformer, categorical_features)])#向预处理器追加回归器lr = Pipeline(steps=[('preprocessor', preprocessor),                      ('classifier', LinearRegression())])# 适配整个管道lr.fit(X_train, y_train)print("model score: %.3f" % lr.score(X_test, y_test))

8.轻松地输出管道的HTML表示形式

一般来说,管道会变得非常复杂,尤其是在处理真实世界的数据时。因此,scikitl-earn提供了一种非常方便的方法来输出管道中步骤的HTML图表。

from sklearn import set_configset_config(display='diagram')   lr

9.有一个绘图函数来可视化决策树

plot_tree()函数允许我们创建决策树模型中的步骤图。

import matplotlib.pyplot as plt from sklearn import metrics, model_selectionfrom sklearn.tree import DecisionTreeClassifier, plot_treefrom sklearn.datasets import load_breast_cancerX,y = load_breast_cancer(return_X_y = True)X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)clf = DecisionTreeClassifier()clf.fit(X_train, y_train)plot_tree(clf, filled=True)plt.show()

10.有很多第三方库扩展了Scikit learn的功能

很多第三方库都可以与 Scikit-learn 一起使用,来扩展功能。

例如 category-encoders 库和 ELI5 包,该库为分类特性提供了更大范围的预处理方法,以及 ELI5包用于实现更大的模型可解释性。

这两个库都可以直接在 Scikit-learn 管道中使用。

# 使用类别编码器的证据权重变压器的管道from sklearn import model_selectionfrom sklearn.linear_model import LinearRegressionfrom sklearn.datasets import fetch_openmlfrom sklearn.compose import ColumnTransformerfrom sklearn.pipeline import Pipelinefrom sklearn.impute import SimpleImputerfrom sklearn.preprocessing import StandardScaler, OneHotEncoderimport category_encoders as ce#加载同时包含分类和数字特征的auto93数据集X,y = fetch_openml("auto93", version=1, as_frame=True, return_X_y=True)# 创建数字和分类特征列表numeric_features = X.select_dtypes(include=['int64', 'float64']).columnscategorical_features = X.select_dtypes(include=['object']).columnsX_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)# 创建数字和分类转换器以执行预处理步骤numeric_transformer = Pipeline(steps=[    ('imputer', SimpleImputer(strategy='median')),    ('scaler', StandardScaler())])categorical_transformer = Pipeline(steps=[        ('imputer', SimpleImputer(strategy='constant', fill_value='missing')),        ('woe', ce.woe.WOEEncoder())])# 使用ColumnTransformer应用于正确的功能preprocessor = ColumnTransformer(    transformers=[        ('num', numeric_transformer, numeric_features),        ('cat', categorical_transformer, categorical_features)])# 将回归附加到预处理器lr = Pipeline(steps=[('preprocessor', preprocessor),                      ('classifier', LinearRegression())])# 适配整个管道lr.fit(X_train, y_train)print("model score: %.3f" % lr.score(X_test, y_test))

--END--

喜欢本文的同学记得转发+点赞~

更多内容,欢迎大家关注我们的公众号:为AI呐喊(weainahan)

wpf window 不执行show 就不能load执行_关于机器学习中的Scikit-Learn,你不知道的10个实用功能...相关推荐

  1. wpf window 不执行show 就不能load执行_Numpy反序列化命令执行漏洞分析(CVE-2019-6446)附0day...

    1.介绍 NumPy 是 Python 机器学习库中之一,主要对于多为数组执行计算.NumPy 提供大量的 函数和操作,能够帮助程序员便利进行数值计算.在 NumPy 1.16.0 版本之前存在反序列 ...

  2. python中执行linux命令(调用linux命令)_常见Python中调用Linux命令

    有时候我们需要从Python中执行Linux命令,下面就介绍几种方法? 1. os 模块: 1.1 os.system 函数: system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果. ...

  3. Android Window 如何确定大小/onMeasure()多次执行原因

    前言 之前系统地分析了View Measure 过程: Android 自定义View之Measure过程 我们知道父布局根据自身和子布局的要求给子布局生成测量模式和测量尺寸,并封装在MeasureS ...

  4. JavaScript立即执行函数报错--立即执行函数原理分析

    JavaScript立即执行函数报错 1.'()'在JavaScript环境中有提升运算符优先级和执行函数的作用如果直接在JavaScript环境中执行'()',环境会报出语法错误提示. 2.'()' ...

  5. golang atomic load 性能_设计模式之Golang单例模式

    今天给大家讲下什么是单例模式,以及在Go语言中如何用正确的姿势实现它.其实单例模式是一种在平时开发中经常用到的软件设计模式.在设计模式结构中,其核心是只包含一个被称为单例的特殊类.通过单例模式可以确保 ...

  6. js中执行php语句_重温JS中的执行环境和作用域链

    说明:以下代码说明和原理都是基于ES5和非严格模式进行 执行环境和作用域链 执行环境定义了变量或函数有权访问的其他数据.每个执行环境都有与之关联的变量对象,一般情况下我们无法访问变量对象,解析器会在我 ...

  7. php代码审计命令执行,PHP代码审计笔记--命令执行漏洞

    命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: $target=$_REQUEST['ip']; $cmd = sh ...

  8. db2 load 快速_使用 DB2 的 LOAD FROM CURSOR 特性快速轻松地转移数据

    使用 DB2 的 LOAD FROM CURSOR 特性快速轻松地转移数据 Dirk Fechner 2009 年 2 月 10 日发布 简介 典型的 DB2 数据转移任务涉及三个步骤:把数据以二进制 ...

  9. awk执行行操作及怎样从文本文件和字符串中抽取信息

    下面没有讲述a w k的全部特性,也不涉及a w k的深层次编程,仅讲述使用a w k执行行操作及怎样从文本文件和字符串中抽取信息. 引用: 内容有: • 抽取域. • 匹配正则表达式. • 比较域. ...

最新文章

  1. 文科生学python系列_文科生学 Python 系列 3:函数
  2. Sed教程(一):简介、环境设置、工作流程
  3. 2017-3-19四校联考
  4. 茫茫内存,我该如何用 windbg 找到你 ?
  5. 华为P50 Pro外形首曝:新造型,头次见!
  6. python反编译class文件_反编译java class文件
  7. 告别巴蒂和你的年少时代--当Batigol成为永恒
  8. 【干货分享】如何使用英文字体做出高逼格的杂志封面
  9. ORACLE11g数据库安装-刘建-专题视频课程
  10. linux malloc内存申请相关参数设置
  11. 《游戏人工智能》学习笔记3——7 用脚本写现实世界的行为树
  12. 获取天气预报ajax,Ajax 通过城市名获取数据(全国天气预报API)
  13. [Acwing] 健康的荷斯坦奶牛 -二进制枚举
  14. 领英精灵和领英助理哪个好?为什么领英精灵是LinkedIn最好的配套工具?
  15. 永磁同步电机(PMSM)参数辨识(二)
  16. python爬虫BeautifulSoup库抓取500彩票网竞彩足球信息并在excel表中对中奖赔率设置格式
  17. 关于QUERY_ALL_PACKAGES权限导致Google下架apk
  18. c语言中一维数组和二维数组,详解C++中的一维数组和二维数组
  19. 星模php,PHP笔试题大全 PHP面试题大全(含答案)
  20. SQL server 游标(只进游标)讲解

热门文章

  1. Python 3.8 新功能大揭秘
  2. 漫画:如何给女朋友解释什么是策略模式?
  3. 唯一被图灵求婚的女人,与他并肩破译纳粹德国 Enigma 密码,拯救千万人生命!| 人物志...
  4. 如何应对日益膨胀的数据流量? | 技术头条
  5. 论“天才球员”有多重要!
  6. 北漂的程序员们,这寒冬你是否“有枝可依”?
  7. 脑瘫男孩17岁考上大学,毕业在家工作每月7500,成为公司骨干
  8. 计算机四进制表示形式,1.4.2 二进制数的四种表示形式(1)
  9. 字节跳动算法工程师总结:java抽象类和接口实验报告
  10. 今天带你详细了解各组件原理