我有大约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方法的原因。以下是我正在运行的当前代码的摘录,其中突出显示了已标识的代码:
[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观察值)要长得多)。
感谢任何人的帮助!
发布于 2015-08-11 08:33:38
对于在Scikit-learn中训练预测模型来说,45万行通常有点大。如果您对非响应者进行过低采样(保留所有响应者),以将数据集控制在100K行以下,那么您可能仍然会获得良好的结果。
https://stackoverflow.com/questions/31928691
复制相似问题