首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KNN -如何加速?

KNN -如何加速?
EN

Stack Overflow用户
提问于 2015-08-11 04:38:03
回答 1查看 1.4K关注 0票数 1

我有大约65个特征的df,45万个观察值,以及不平衡的分类响应变量Y (~5% true,2个状态)。这已经通过train_test_split分为{Xtrain,ytrain} (10%)和{Xtest,ytest} (90%)。

我正在尝试为分类器KNN调优N_neighbors超参数。我使用gridsearchCV和StratifiedKfoldCV,但放弃了尝试,因为循环花费了太长的时间(超过12小时,对于25个N_Neighbors值,3倍CV)。

我已经找出了predict_proba方法的原因。以下是我正在运行的当前代码的摘录,其中突出显示了已标识的代码:

代码语言:javascript
复制
[In]
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import roc_curve, auc, roc_auc_score, confusion_matrix

clf = KNeighborsClassifier(n_neighbors = 5)
Xtrain_Scaled = preprocessing.StandardScaler().fit_transform(Xtrain)
Xtest_Scaled = preprocessing.StandardScaler().fit_transform(Xtest)

clf.fit(Xtrain_Scaled, ytrain)
...

**y_probas_KNN = clf.predict_proba(Xtest_Scaled)[:,1]**

目前,笔记本已经在这条线路上运行了2个多小时(现在隔离在一个单独的单元中)。这是不直观的,因为其他分类器(逻辑回归,DecisionTreeClassifier)的predict_proba方法不需要接近这个时间长度的任何地方。

更新11AUG15 -很明显有一些奇怪的事情在发生:

在Xtest中运行100k观察值的predict_proba (例如,Xtest;1000,比在Xtrain上运行predict_predict proba (45k观察值)要长得多)。

感谢任何人的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-08-11 08:33:38

对于在Scikit-learn中训练预测模型来说,45万行通常有点大。如果您对非响应者进行过低采样(保留所有响应者),以将数据集控制在100K行以下,那么您可能仍然会获得良好的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31928691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档