Intel Scikit-learn扩展使用以及优化效果展示

因特尔的oneAPI提供了诸多针对于其CPU与GPU的运算效率优化扩展。本文尝试了Scikit-learn扩展的接口调用方法,并将该扩展应用在一个随机森林分类项目上,对比了使用前后的速度以及准确率表现。

接口调用

该接口调用十分简单,参照Installation — Intel(R) Extension for Scikit-learn* 2023.0.1 documentation的教程示例,在Windows系统上直接使用pip方法安装对应库即可。

pip install scikit-learn-intelex

完成安装后,只需在正常使用scikit-learn所提供的方法之前调用扩展,之后运算时会自动地进行效率优化(需注意该扩展仅在python3.9以上的版本可用)。调用方法如下:

from sklearnx import patch_sklearn

patch_sklearn()

扩展应用

本应用案例的母题来自2022年数维杯数学建模竞赛,题目提供了针对阿尔兹海默症的潜在或已患病人群的调查信息数据集,要求实现对患者患病程度的分类。本题可使用sklearn提供的随机森林预训练模型作为分类模型。分类算法的核心代码如下(以下代码中所使用的数据已经预处理):

from sklearn.ensemble import RandomForestClassifier

t0 = time()

classifier = RandomForestClassifier(n_estimators=50)

classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

t1 = round(time() - t0, 3)



from sklearn.metrics import classification_report

result1 = classification_report(y_test, y_pred)

result2 = accuracy_score(y_test,y_pred)

print (result1)

print("Accuracy:",result2)

print('time:',t1)

设置决策树的数目为5000,实际上并不需要这么多,当决策树数量到达一定值后,决策树数量的提升对分类效果的提升就会变得很有限(此前使用该模型时的决策树数目设置为50)。这个操作的主要目的是提供足够长的模型训练时间以供参考。其余参数为默认值。未使用扩展时,模型在训练集上的表现和时间占用情况如下:

应用扩展后,得到模型在训练集上的表现和时间占用情况如下:

可见,应用前后的准确率提升有限,但训练时间被大大降低,随机森林模型的时间优化在2~3倍左右。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值