我在我的机器上成功使用了scikit-learn。我正在尝试使用anaconda实现(依赖于MKL进行多线程处理)和openblas实现。
我真的想使用并行版本的k-最近邻分类器,根据https://github.com/scikit-learn/scikit-learn/pull/4009,sklearn应该在1年前版本0.17中合并此更改。
多线程可以成功地用于PCA和所有numpy操作。我可以告诉多线程正在工作,因为当我做点积和PCA时我可以看到大量的线程。当我午餐KNN大约需要10分钟。 我正在对MNIST的高维数据集(图像数字)进行分类。所以我正在做PCA以获得尺寸为35-50的向量,然后我正在进行非线性扩展,所以我得到了尺寸为600-100的向量。这就是我需要并行性的原因。
我的sklearn版本是:
print('scikit-learn version is {}。'。format(sklearn。 version ))
scikit-learn版本为0.18.1。
我正在使用python3,这是代码示例:
def classify_knn(train, test, train_labels):
clf = KNeighborsClassifier(algorithm='ball_tree')
clf = clf.fit(train, train_labels)
return clf.predict(test)
我尝试过使用和不使用'ball_tree'。 2017年没有人应该使用python 2.7,我也不会。
答案 0 :(得分:0)
只是作为参数传递
n_jobs = -1
解决了这个问题。