☞500g+超全学习资源免费领取

作者:xiaoyu,数据爱好者

Python数据科学出品

Scikit-learn此次发布的版本为0.22。我浏览了一下,此次版本除了修复之前出现的一些bug,还更新了很多新功能,不得不说更加好用了。下面我把我了解到主要的几个最新功能和大家分享一下。

▍sklearn.ensemble 集成模型

1. 模型融合

旧版本的ensemble集成学习模块里只有提升树、随机森林等高级模型,新版本增加了融合模型,有 StackingClassifier 和 StackingRegressor ,对应分类和回归。原来模型融合的做法是自己手撸一个,现在可以做到直接使用方法,更加方便,尤其对于参加kaggle竞赛,模型融合也是上分利器。

下面是更新后的一个使用例子。

from sklearn.datasets import load_iris
from sklearn.svm import LinearSVC
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.ensemble import StackingClassifier
from sklearn.model_selection import train_test_splitX, y = load_iris(return_X_y=True)
estimators = [('rf', RandomForestClassifier(n_estimators=10, random_state=42)),('svr', make_pipeline(StandardScaler(),LinearSVC(random_state=42)))
]
clf = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression()
)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42
)
clf.fit(X_train, y_train).score(X_test, y_test)
0.9473684210526315

2. 对梯度提升提供缺失值的本地支持

ensemble.HistGradientBoostingClassifier 和 ensemble.HistGradientBoostingRegressor 现在对缺失值(NaNs)具有本机支持,因此在训练或预测时就不需填补缺失数据了,完全可以直接运行。

from sklearn.experimental import enable_hist_gradient_boosting  # noqa
from sklearn.ensemble import HistGradientBoostingClassifier
import numpy as npX = np.array([0, 1, 2, np.nan]).reshape(-1, 1)
y = [0, 0, 1, 1]gbdt = HistGradientBoostingClassifier(min_samples_leaf=1).fit(X, y)
print(gbdt.predict(X))
[0 0 1 1]

▍sklearn.impute 模块

新版本的 sklearn.impute 模块中增加了 impute.KNNImputer ,所以当我们需要填补缺失值时,可以考虑直接使用KNN的这个算法填补。

import numpy as np
from sklearn.impute import KNNImputerX = [[1, 2, np.nan], [3, 4, 3], [np.nan, 6, 5], [8, 8, 7]]
imputer = KNNImputer(n_neighbors=2)
print(imputer.fit_transform(X))
[[1.  2.  4. ][3.  4.  3. ][5.5 6.  5. ][8.  8.  7. ]]

▍sklearn.inspection 模块

新增加了 inspection.permutation_importance, 可以用来估计每个特征的重要性。

from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importanceX, y = make_classification(random_state=0, n_features=5, n_informative=3)
rf = RandomForestClassifier(random_state=0).fit(X, y)
result = permutation_importance(rf, X, y, n_repeats=10, random_state=0,n_jobs=-1)fig, ax = plt.subplots()
sorted_idx = result.importances_mean.argsort()
ax.boxplot(result.importances[sorted_idx].T,vert=False, labels=range(X.shape[1]))
ax.set_title("Permutation Importance of each feature")
ax.set_ylabel("Features")
fig.tight_layout()
plt.show()

▍sklearn.metrics 模块

新版本增加了一个非常好的功能 metrics.plot_roc_curve,解决了roc_curve 绘制的问题。原来需要自己根据auc/roc原理自己撸,虽然网上已有了相应成熟的现成代码,但此后可以直接放心大胆的用了。

同时,这个 roc_auc_score 函数也可用于多类分类。目前支持两种平均策略:1-VS-1 算法计算成对的ROC AUC分数的平均值,1-VS-REST 算法计算每一类相对于所有其他类的平均分数。在这两种情况下,多类ROC AUC分数是根据该模型从样本属于特定类别的概率估计来计算的。OVO和OVR算法支持均匀加权(average='macro')和按流行率(average='weighted')。

from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.metrics import roc_auc_scoreX, y = make_classification(n_classes=4, n_informative=16)
clf = SVC(decision_function_shape='ovo', probability=True).fit(X, y)
print(roc_auc_score(y, clf.predict_proba(X), multi_class='ovo'))
0.9957333333333332

脚本的总运行时间:(0分7.364秒)

估计内存使用量:8 MB

▍全新 plotting API

对于创建可视化任务,scikit-learn 推出了一个全新 plotting API。这个新API可以快速调整图形的视觉效果,不再需要进行重新计算。也可以在同一个图形中添加不同的图表。例如:

from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import plot_roc_curve
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
import matplotlib.pyplot as pltX, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)svc = SVC(random_state=42)
svc.fit(X_train, y_train)
rfc = RandomForestClassifier(random_state=42)
rfc.fit(X_train, y_train)svc_disp = plot_roc_curve(svc, X_test, y_test)
rfc_disp = plot_roc_curve(rfc, X_test, y_test, ax=svc_disp.ax_)
rfc_disp.figure_.suptitle("ROC curve comparison")plt.show()

▍预计算的稀疏近邻图

大多数基于最近邻图的估算都接受预先计算的稀疏图作为输入,以将同一图重用于多个估算量拟合。

要在pipeline中使用这个特性,可以使用 memory 参数,以及neighbors.KNeighborsTransformer 和 neighbors.RadiusNeighborsTransformer 中的一个。

预计算还可以由自定义的估算器来执行。

from tempfile import TemporaryDirectory
from sklearn.neighbors import KNeighborsTransformer
from sklearn.manifold import Isomap
from sklearn.pipeline import make_pipelineX, y = make_classification(random_state=0)with TemporaryDirectory(prefix="sklearn_cache_") as tmpdir:estimator = make_pipeline(KNeighborsTransformer(n_neighbors=10, mode='distance'),Isomap(n_neighbors=10, metric='precomputed'),memory=tmpdir)estimator.fit(X)# We can decrease the number of neighbors and the graph will not be# recomputed.estimator.set_params(isomap__n_neighbors=5)estimator.fit(X)

以上就是本次我了解到的主要更新内容,更多详细信息请参考。

链接:https://scikit-learn.org/dev/whats_new/v0.22.html

▍安装

升级很简单,一行指令即可完成。

pip install --upgrade scikit-learn

或者用conda

conda install scikit-learn

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾
那些年做的学术公益-你不是一个人在战斗适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看

太强了!Scikit-learn 0.22新版本发布,新功能更加方便相关推荐

  1. Rasa 3.x 学习系列-Rasa [3.4.0] - 2022-12-14新版本发布

    Rasa 3.x 学习系列-Rasa [3.4.0] - 2022-12-14新版本发布 任何人都可以学习Rasa之优秀Rasa学习资源推荐 欢迎同学们报名Gavin老师的Rasa系列课程,任何人都可 ...

  2. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析 我的知乎专栏-小楼昨夜又秋风 https://zhuanlan.zhihu.com/oldtimes 新版本就不再吐槽了,整的自己跟个愤青似的.人老了, ...

  3. 两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引

    导读:本文详细介绍 MySQL 8.0.19 三大索引新功能,隐藏索引,降序索引,函数索引,结合其他同仁的技术应用案例,进一步进行验证改编,最后总结心得,希望对大家有帮助. MySQL 8.0 版本带 ...

  4. groupby索引有效吗_两千字揭密 MySQL 8.0.19 三大索引新功能

    原文链接:https://www.modb.pro/db/22619 导读:本文详细介绍 MySQL 8.0.19 三大索引新功能,隐藏索引,降序索引,函数索引,结合其他同仁的技术应用案例,进一步进行 ...

  5. matlab旧版比新版好用,MATLAB新版本及新功能介绍matlab2012b.PDF

    MATLAB新版本及新功能介绍matlab2012b Matlab2012b New Feather Desktop 1. Toolstrip 代替了菜单和toolbar 1.1 Toolstrip ...

  6. 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络

    本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...

  7. android 打开微信好友动态,朋友圈可以查看“访客记录”?微信8.0.1不简单,新功能大解析...

    前段时间,iOS系统提前更新了8.0版本,这让安卓用户非常不满.满世界的苹果用户都在体验微信的新功能,只有安卓用户一脸懵,好在安卓系统的用户终于等到了.微信每一次的更新都是影响重大的,因为在微信的背后 ...

  8. 八猴模型html文件,4年来首次更新!八猴4.0都有哪些新功能?

    好了,应一位老粉丝的要求,我们今天来说说8猴新版4.0的功能. 前天吧,具体哪天忘了,国内和国外有时差,但是不管了,Marmoset发布了Toolbag4.0,也就是我们国内小伙伴俗称的八猴,这也是近 ...

  9. C# 6.0 (C# vNext) 的新功能:Exception-Handling Improvements

    于 C# 6.0 包裹在异常处理的新功能,有两个方面的改进: 异步处理(async and await)能力 catch block 总结使用.于 C# 5.0 释放 async and await, ...

最新文章

  1. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载
  2. win7如何更改文件类型_教你win7局域网设置方法
  3. 2017年安防监控中的那些核心云计算技术
  4. Java培训教程之使用Lock取代synchronized
  5. 如何保证用户登陆时提交密码已经加密
  6. python ascii转utf8_ascii 转换为 utf-8
  7. CCNA学习指南 第五章 下载
  8. 仙人掌之歌——权力的游戏(1)
  9. vc++2010注册表修改
  10. 多元升级重塑移动体验 三星Galaxy发布多款新品
  11. k8s搭建xxl-job过程
  12. adb关闭手机系统自动更新
  13. Deep Speech笔记
  14. itextsharp 获取文本_使用itextsharp从签名图像中获取Layer2文本(签名描述)
  15. Win11如何把d盘空间分给c盘?Win11d盘分盘出来给c盘的方法
  16. 必备装机软件,软件推荐
  17. 九峰影业创始人_九峰百度百科
  18. python使用execJS运行js函数例子
  19. C#/WPF/.NET 第三方ddl强签名解决(xxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)
  20. 已知等价关系求商集_等价关系习题

热门文章

  1. 带排序动画的横向条形图
  2. Algorithms学习笔记-Chapter0序言
  3. POJ 3436 ACM Computer Factory(最大流+路径输出)
  4. 【树莓派】关于tinyproxy问题处理
  5. 用数据驱动思想来设计游戏-读《游戏编程精粹1》
  6. java ctp行情_java-ctp
  7. mooc北京大学python_实用Python程序设计
  8. 图像处理--图像上采样和下采样
  9. tcc(tiny cc)的作者是谁,对tcc的特点做描述?
  10. HTML中form和div出现间隙以及页面居中的问题