我正在按照yhat的预测分析教程进行学习,但在到达交叉验证步骤时遇到了麻烦。每当我尝试执行这两段代码时,Jupyter就会卡在执行步骤。以下是问题输入:输入1
from sklearn.cross_validation import KFolddef run_cv(X,y,clf_class,**kwargs): # 构建一个kfolds对象 kf = KFold(len(y),n_folds=5,shuffle=True) y_pred = y.copy() # 遍历折叠 for train_index, test_index in kf: X_train, X_test = X[train_index], X[test_index] y_train = y[train_index] # 使用关键字参数初始化一个分类器 clf = clf_class(**kwargs) clf.fit(X_train,y_train) y_pred[test_index] = clf.predict(X_test) return y_pred
在下一个输入中,我实际上尝试并比较了三种算法 – 输入2:
from sklearn.svm import SVCfrom sklearn.ensemble import RandomForestClassifier as RFfrom sklearn.neighbors import KNeighborsClassifier as KNNdef accuracy(y_true,y_pred): # NumPy将True和False解释为1.和0. return np.mean(y_true == y_pred)print "支持向量机:"print "%.3f" % accuracy(y, run_cv(X,y,SVC))print "随机森林:"print "%.3f" % accuracy(y, run_cv(X,y,RF))print "K-最近邻:"print "%.3f" % accuracy(y, run_cv(X,y,KNN))
我的代码有问题还是Jupyter的问题?
回答:
我刚创建了一个大约54,000行的数据集和3个特征,并运行了你所用的yhat教程。运行大约用了30秒,在2016年的MacBook Pro上。
我认为你的代码没有问题,只是运行需要一些时间。
为了测试,你可以限制数据集的大小并进行测试运行。如果那能工作,那么你就知道只是运行需要一些时间。
例如,从你的数据的前200个样本开始。运行:
X = X[:200]y = y[:200]
在你运行交叉验证之前限制数据。