带有 scikit-learn 的英特尔 daal4py 分类器

Posted

技术标签:

【中文标题】带有 scikit-learn 的英特尔 daal4py 分类器【英文标题】:intel daal4py classifiers with scikit-learn 【发布时间】:2020-02-03 15:04:24 【问题描述】:

我正在为最新版本的英特尔 daal4py 分类器测试与 sklearn 兼容的包装器。 intel k-nearest 分类器与 sklearn 的 cross_val_score() 和 GridSearchCV 配合得很好。英特尔分类器的性能提升非常显着,英特尔和 sklearn 模型在 10 个不同的大型公共数据集和一些模拟数据集上提供了大致可比的结果。 英特尔随机森林分类器的 sklearn 兼容包装器似乎完全被破坏了。 score() 方法不起作用,因此我无法继续使用英特尔随机森林包装器类。

我在英特尔人工智能开发者论坛上发布了这篇文章,但我想知道这里是否有人已经让英特尔 sklearn 兼容的随机森林分类器工作了。

我的下一步是测试本机 daal4py 随机森林对象,并可能编写我自己的包装器,因为本机 daal4py api 与 sklearn 是如此不同。我希望避免这种情况。 英特尔网站上似乎有一些关于包装类名称的混淆。

我正在使用:

对于 k-最近:daal4py.sklearn.neighbors.kdtree_knn_classifier(这个 工作正常) 对于随机森林: daal4py.sklearn.ensemble.decision_forest.RandomForestClassifier

intel RandomForestClassifier 中的失败是在 forest.py 中,因为 n_classes_ 是一个 int。 n_classes_ 匹配传递的标签变量的类数。标签变量是一个整数。

predictions = [np.zeros((n_samples, n_classes_[k]))
                for k in range(self.n_outputs_)]

【问题讨论】:

【参考方案1】:

请在下面找到我们用于计算 daal4py RandomForestClassifier 分数的步骤

(i) 对于 cross_val_score

from daal4py.sklearn.ensemble.decision_forest import RandomForestClassifier
from sklearn.model_selection import cross_val_score
clf = RandomForestClassifier()
scores = cross_val_score(clf, train_data, train_labels, cv=3)
print(scores)

(ii)对于 GridSearchCV

from sklearn.model_selection import GridSearchCV
from daal4py.sklearn.ensemble.decision_forest import RandomForestClassifier
param_grid =  
    'n_estimators': [200, 700],
    'max_features': ['auto', 'sqrt', 'log2']

clf = RandomForestClassifier()
CV_rfc = GridSearchCV(estimator=clf, param_grid=param_grid, cv= 5)
CV_rfc.fit(train_data, train_labels)
score=CV_rfc.score(train_data, train_labels)

【讨论】:

谢谢。是的,我出于习惯设置了 oob_score=True 。英特尔® AI 开发者论坛表示,oob_score 将在下一版本中添加。否则,工作完美无缺。

以上是关于带有 scikit-learn 的英特尔 daal4py 分类器的主要内容,如果未能解决你的问题,请参考以下文章

英特尔 DAAL python 错误

Intel DAAL AI鍔犻€熲€斺€旀敮鎸佷粠鏁版嵁棰勫鐞嗗埌妯″瀷棰勬祴锛屾暟鎹簮蹇呴』浣跨敤DAAL鐨勫簳灞傚皝瑁呭簱

已解决!pip安装daal库时报错:ERROR: Cannot uninstall ‘TBB‘. It is a distutils installed project and......其它库类推

为啥带有铰链损失的 SGDClassifier 比 scikit-learn 中的 SVC 实现更快

Scikit-learn 的带有线性内核 svm 的 GridSearchCV 耗时太长

使用带有 Pandas DataFrame 的 Scikit-Learn OneHotEncoder