golang 升级到新版本_Scikit-learn新版本发布,一行代码秒升级

十三 发自 凹非寺
量子位 报道 | 公众号 QbitAI

Scikit-learn,这个强大的Python包,一直深受机器学习玩家青睐。

而近日,scikit-learn 官方发布了 0.22 最终版本

d742e3b15f59c3fd580a8dd1d2432d58.png

此次的更新修复了许多旧版本的bug,同时发布了一些新功能。

安装最新版本 scikit-learn 也很简单。

使用 pip :

pip install --upgrade scikit-learn

使用 conda :

conda install scikit-learn

接下来,就是此次更新的十大亮点

全新 plotting API

对于创建可视化任务,scikit-learn 推出了一个全新 plotting API。

这个新API可以快速调整图形的视觉效果,不再需要进行重新计算。

也可以在同一个图形中添加不同的图表。

例如:

from sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCfrom sklearn.metrics import plot_roc_curvefrom sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import make_classificationimport 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()
4fc0105c21edcb812f06279058cf2a44.png

StackingClassifier和StackingRegressor

StackingClassifier 和 StackingRegressor 允许用户拥有一个具有最终分类器/回归器的估计器堆栈(estimator of stack)。

堆栈泛化(stacked generalization)是将各个估计器的输出叠加起来,然后使用分类器来计算最终的预测。

基础估计器拟合在完整的X( full X )上,而最终估计器则使用基于cross_val_predict的基础估计器的交叉验证预测进行训练。

例如:

from sklearn.datasets import load_irisfrom sklearn.svm import LinearSVCfrom sklearn.linear_model import LogisticRegressionfrom sklearn.preprocessing import StandardScalerfrom sklearn.pipeline import make_pipelinefrom sklearn.ensemble import StackingClassifierfrom 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。

基于排列(permutation)的特征重要性

inspection.permutation_importance可以用来估计每个特征的重要性,对于任何拟合的估算器:

from sklearn.ensemble import RandomForestClassifierfrom 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()
d362d25abbb12212a39852797a060b5b.png

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

ensemble.HistGradientBoostingClassifier 和 ensemble.HistGradientBoostingRegressor 现在对缺失值(NaNs)具有本机支持。这意味着在训练或预测时无需插补数据。

from sklearn.experimental import enable_hist_gradient_boosting # noqafrom sklearn.ensemble import HistGradientBoostingClassifierimport 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]。

预计算的稀疏近邻图

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

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

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

from tempfile import TemporaryDirectoryfrom sklearn.neighbors import KNeighborsTransformerfrom sklearn.manifold import Isomapfrom 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)

基于Imputation的KNN

现在,scikit_learn 支持使用k近邻来填充缺失值。

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. ]]

树剪枝

现在,在建立一个树之后,可以剪枝大部分基于树的估算器。

X, y = make_classification(random_state=0)rf = RandomForestClassifier(random_state=0, ccp_alpha=0).fit(X, y)print("Average number of nodes without pruning {:.1f}".format( np.mean([e.tree_.node_count for e in rf.estimators_])))rf = RandomForestClassifier(random_state=0, ccp_alpha=0.05).fit(X, y)print("Average number of nodes with pruning {:.1f}".format( np.mean([e.tree_.node_count for e in rf.estimators_])))

输出
Average number of nodes without pruning 22.3
Average number of nodes with pruning 6.4

从OpenML检索dataframe

datasets.fetch_openml现在可以返回pandas dataframe,从而正确处理具有异构数据的数据集:

from sklearn.datasets import fetch_openmltitanic = fetch_openml('titanic', version=1, as_frame=True)print(titanic.data.head()[['pclass', 'embarked']])

输出
pclass embarked
0 1.0 S
1 1.0 S
2 1.0 S
3 1.0 S
4 1.0 S

检查一个估算器的scikit-learn兼容性

开发人员可以使用check_estimator检查其scikit-learn兼容估算器的兼容性。

现在,scikit-learn 提供了pytest特定的装饰器(decorator),该装饰器允许pytest独立运行所有检查并报告失败的检查。

from sklearn.linear_model import LogisticRegressionfrom sklearn.tree import DecisionTreeRegressorfrom sklearn.utils.estimator_checks import parametrize_with_checks@parametrize_with_checks([LogisticRegression, DecisionTreeRegressor])def test_sklearn_compatible_estimator(estimator, check): check(estimator)

ROC AUC现在支持多类别分类

roc_auc_score 函数也可用于多类别分类。

目前支持两种平均策略:

one-vs-one算法计算两两配对的ROC AUC分数的平均值;
one-vs-rest算法计算每个类别相对于所有其他类别的ROC AUC分数的平均值。

在这两种情况下,模型都是根据样本属于特定类别的概率估计来计算多类别ROC AUC分数。

from sklearn.datasets import make_classificationfrom sklearn.svm import SVCfrom 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

传送门

Twitter:
https://twitter.com/scikit_learn/status/1201847227561529346

博客:
https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_0_22_0.html#new-plotting-api

使用指南:
https://scikit-learn.org/stable/modules/model_evaluation.html#roc-metrics

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅:2020年度获国家科学技术奖励提名的材料项目汇总

来源:http://www.nosta.gov.cn/upload/2020slxmgb/showProject.html转自:材料人2020年3月24日,科学技术部发布了《国家科学技术奖励工作办公室公告第95号》文件。这份文件对2020年国家自然科学奖、国家技术发明奖通用项目、国家科学技术进步奖…

完全理解Android中的RemoteViews

一、什么是RemoteViewsRemoteViews翻译过来就是远程视图.顾名思义,RemoteViews不是当前进程的View,是属于SystemServer进程.应用程序与RemoteViews之间依赖Binder实现了进程间通信.二、RemoteViews的用法RemoteViews使用最多的场合是通知栏和桌面小插件. 以通知栏为例,讲解下它…

各大媒体优劣对比_吉利星瑞特别版对比朗逸,亮点只有性价比?

据悉,吉利汽车推出了星瑞特别版车型——星瑞设计师推荐款,新车已于10月11日的11:00开启抢购,限量3000辆,抢购价格为13.77万元。其中值得注意的是,新车的抢购流程有所不同,想参与抢购的消费者需要先完成吉利…

【推广】实用命令——tldr

碎碎念如题,通常遇到一个新的命令需要查询其帮助的时候,一般使用command -h或者man command来查询,但是,有时候仅仅想知道这个命令怎么用,并不想知道具体含义啊(这个命令可能不常用,没有必要仔细阅读手册)&…

Nature重大突破!将皮肤细胞直接转化成感光细胞让小鼠重见光明!

图片来源:https://cn.bing.com本文系生物谷原创编译,欢迎分享,转载须授权!研究人员发现了一种直接将皮肤细胞重新编程成用于视觉的光敏杆状感光器的技术。实验室制造的杆状体使失明的老鼠能够在细胞移植到眼睛后探测到光线。这项研…

时间组件选择一个时间段_衡南(光伏支架组件安装)施工队

衡南(光伏支架组件安装)施工队光伏支架安装本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,安…

DNA存储,拯救人类数据危机的良方?

来源:脑极体开一个脑洞:如果地球正在面临一场马上到来的毁灭性星际灾害,人类又想尽可能地保存地球的生命和文明,在现有条件下,该怎么办?像大刘一样让地球停止自转然后逃离太阳系,这恐怕来不及了…

oracle数据库dblink创建语句_「运维实验」——达梦数据库DBlink连接Oracle配置

经过昨天达梦数据库间DBlink配置(具体操作可回看上一篇文章),今天做延伸实验。实验环境说明Oracle数据库1:192.168.80.40 ora11g RHEL 6.5 64位达梦数据库1:192.168.80.41 DMSERVER2 RHEL 6.5 64位oracle数据库版本&am…

智能经济的动力,从人工智能到超级智能

作者:刘锋前言:本文是根据研讨会发言形成的探讨性文章,主要阐述了智能经济的产生本质上是科技生态发生重大变化后的产物。提出智能经济运转的动力除了人工智能,人类的智能,互联网大脑模型的超级智能也是新出现的要素。…

损失函数_SRGAN损失函数(目标函数)详解

概要SRGAN的特点之一就是引进了损失感知函数,由此提升了超分辨率之后的细节信息。本文主要像您介绍SRGAN使用的损失函数,及其Keras实现。损失函数公式这是原文中给出的损失函数。容易看出,此损失函数包括两部分,第一部分是感知损失…

PHP获取本月起始和终止时间戳

一、本月起始和结束 //获取本月开始的时间戳 $beginThismonthmktime(0,0,0,date(m),1,date(Y)); //获取本月结束的时间戳 $endThismonthmktime(23,59,59,date(m),date(t),date(Y)); View Code二、上月起始和结束 写法一: $m date(Y-m-d, mktime(0,0,0,date(m)-1,1,…

人工智能细分领域龙头企业排行榜单

来源:互联网周刊2020年3月4日,中共中央政治局常务委员会召开会议,提出要发力于科技端的基础设施建设,人工智能成为“新基建”七大版块中的重要一项。“新基建”不同于传统思路,其本质是信息数字化的基础设施建设&#…

基于原版Hadoop的YDB部署(转)

YDB依赖环境准备 一、硬件环境 硬件如何搭配,能做到比较高的性价比,不存在短板。合理的硬件搭配,对系统的稳定性也很关键。 1.CPU不是核数越高越好,性价比才是关键。 经常遇到很多的企业级客户,他们机器配置非常高&…

物联网基石,五大领域对智能传感器的需求暴涨

来源:仪商网 传感器好比人的眼耳口鼻,但又不仅仅只是人的感官那么简单,它甚至能够采集到更多的有用信息。既然如此,就可说这些传感器是整个物联网系统工作的基础,正是因为有了传感器,物联网系统才有内容传递…

c6011取消对null指针的引用_C/C++学习笔记——C提高:指针强化

指针是一种数据类型指针变量指针是一种数据类型,占用内存空间,用来保存内存地址。void test01(){ int* p1 0x1234; int*** p2 0x1111; printf("p1 size:%d\n",sizeof(p1)); printf("p2 size:%d\n",sizeof(p2)); //指针是变…

现在的人工智能只是“窄AI”?

来源丨The Next Web编辑丨科技行者1956年,由数学系年轻的助理教授John McCarthy领导的科学家小组齐聚新罕布什尔州的达特茅斯学院,计划进行一个为期六周且雄心勃勃的项目:创建一种能够“使用语言、形式抽象与概念,帮助人类解决各类…

需要单机还是集群部署_单机、集群和分布式(微服务结构)的区别

一、单机单机就是所有的业务全部写在一个项目中,部署服务到一台服务器上,所有的请求业务都由这台服务器处理。显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求。自然而然地想到一个程序不行就部署多个喽&#xf…

查询 oracle_ORACLE数据库查询语句

Oracle数据库————SQL基本查询一、涉及内容1.掌握SELECT 语句的基本语法。2.掌握常用函数的使用。二、具体操作(一)使用Scott方案下的emp表和dept表,完成以下操作:1.查询部门编号是20的员工信息。2.查询工作为CLERK的员工号、员工名和部门号&#xff…

2020年中国新基建产业报告(收藏)

来源:董秘君未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱&a…

从云到端,谷歌的AI芯片2.0

来源:脑极体 得芯片者得天下。我们可以把这句话再延伸一下说,得AI芯片者得未来的天下。对于智能终端厂商来说,能够自研SoC芯片似乎才是顶级实力的象征。众所周知,盘踞全球智能手机前三甲的三星、华为、苹果,无一例外都…