python学习——重温sklearn中的若干知识点

1.模型加速
这个痛点是我最近在做参数优化的时候,使用

GridSearchCV()

来优化SVM模型的时候,居然跑了n多久时间还是没跑完,更绝绝子的是,后面跑了太久jupyter超时,断开链接,程序挂了(跑了一天没了,你说气不气)
后面复盘的时候,有可能是两方面原因,一个是内存占用过多,导致python进程被干掉了,一个是jupyter超时主动断开了
jupyter的问题还是要解决,这里先插个眼
先说模型加速的问题,下面参考文献区是我找的一些解决方案,其中有一个比较简单的方案就是说,使用BaggingClassifier来进行加速,见参考文献第一个。

import time
import numpy as np
from sklearn.ensemble import BaggingClassifier, RandomForestClassifier
from sklearn import datasets
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVC

iris = datasets.load_iris()
X, y = iris.data, iris.target

X = np.repeat(X, 100, axis=0)
y = np.repeat(y, 100, axis=0)
start = time.time()
clf = OneVsRestClassifier(SVC(kernel='linear', probability=True, class_weight='balanced'))
clf.fit(X, y)
end = time.time()
print("Single SVC", end - start, clf.score(X,y))
proba = clf.predict_proba(X)

n_estimators = 10
start = time.time()
clf = OneVsRestClassifier(BaggingClassifier(SVC(kernel='linear', probability=True, class_weight='balanced'), max_samples=1.0 / n_estimators, n_estimators=n_estimators))
clf.fit(X, y)
end = time.time()
print ("Bagging SVC", end - start, clf.score(X,y))
proba = clf.predict_proba(X)

start = time.time()
clf = RandomForestClassifier(min_samples_leaf=20)
clf.fit(X, y)
end = time.time()
print ("Random Forest", end - start, clf.score(X,y))
proba = clf.predict_proba(X)

我这里贴一下代码的结果

Single SVC 51.605311155319214 0.9666666666666667
Bagging SVC 4.764530658721924 0.9733333333333334
Random Forest 0.3716573715209961 1.0

效果还是很立竿见影的
BaggingClassifier的一个操作是,

tips:我介绍一下,上述代码中出现的OneVsRestClassifier是什么含义
一对一(OvR)的多类/多标签策略
也称为“一对多”,此策略包括为每个类配备一个分类器。对于每个分类器,该分类将与所有其他分类进行拟合。除了其计算效率(仅n_classes 需要分类器)之外,这种方法的一个优点是其可解释性。由于每个类别仅由一个和一个分类器表示,因此可以通过检查其对应的分类器来获取有关该类别的知识。这是用于多类分类的最常用策略,并且是合理的默认选择。
参考文献:
Making SVM run faster in python
一对一(OvR)的多类/多标签策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化橙同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值