我有一个简单的 Python 代码(来自 Kaggle 的数字识别练习),如果我从命令行执行它,它运行良好(我使用 Windows 8.1 64 位和 Enthought Canopy 1.4.1)。
import numpy
from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation
print "\nreading training data..."
dataFilename = "D:\\Kaggle\\Digit Recognizer\\Data\\train.csv"
dataFile = open(dataFilename, 'r')
data = numpy.array([map(int, line.replace('\n', '').split(',')) for line in dataFile.readlines()[1:]])
dataFile.close()
print "\nseparating training data to features and targets..."
# use all data to train the algorithm
trainingSet_Y = data[:, 0]
trainingSet_X = data[:, 1:]
print "\ntraining a classifier..."
classify_RF = RandomForestClassifier(n_estimators = 100, n_jobs = -1)
classify_RF.fit(trainingSet_X, trainingSet_Y)
print "\ncalculating cross-validation score..."
scores = cross_validation.cross_val_score(classify_RF, trainingSet_X, trainingSet_Y, cv = 5, n_jobs = -1)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), numpy.std(scores) * 2))
我决定将我所有的开发迁移到 Visual Studio,所以我安装了 Python Tools for Visual Studio 2.1 以直接从 VS Community 2013 开始编码/运行。(注意:安装顺序:(1)Canopy,(2)VS2013,和(3)PTVS。)
然而,同样的代码在 VS2013 中执行时表现得非常奇怪。它一直运行到交叉验证步骤,然后开始循环代码并一遍又一遍地重新运行所有内容,有时会在其途中吐出错误消息,如下所示:
如您所见,一旦到达交叉验证步骤,它就会从头开始,并随机遍历代码以仅执行其中的某些部分!
有任何想法吗?