【发布时间】:2015-11-02 21:45:32
【问题描述】:
我有约 65 个特征的 df、450k 观察值和不平衡的分类响应变量 Y(约 5% 正确,2 个状态)。这已通过 train_test_split 分为 {Xtrain, ytrain} (10%) 和 {Xtest, ytest} (90%)。
我正在尝试为分类器 KNN 调整 N_neighbors 超参数。我正在使用带有 StratifiedKfoldCV 的 gridsearchCV 但放弃了尝试,因为循环需要很长时间(超过 12 小时,对于 25 个 N_Neighbors 值,3 倍 CV)。
我已将原因隔离到 predict_proba 方法。这是我正在运行的当前代码的摘录,突出显示了已识别的代码:
[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 方法不会花费接近这个时间长度的任何地方。
2015 年 8 月 11 日更新 - 显然有什么奇怪的锣声:
对 Xtest 中的 100k 观测值运行 predict_proba(例如,Xtest[;1000,] 比在 Xtrain 上的 predict_predict proba (45k 观测值)花费更长的时间。
任何帮助表示赞赏!
【问题讨论】:
-
KNN 有多种实现方式,包括 kmcuda,例如,基于 GPU,速度提高 10 倍。
标签: python ipython-notebook knn