我正在测试最新版本的intel daal4py分类器的sklearn兼容包装器。intel的k近邻分类器与sklearn的cross_val_score()和GridSearchCV配合得很好。intel分类器的性能提升显著,并且在10个不同的公共大数据集和一些模拟数据集上,intel和sklearn模型提供了大体可比的结果。intel随机森林分类器的sklearn兼容包装器似乎完全坏了。score()方法不起作用,所以我无法继续使用intel随机森林包装类进行测试。
我在intel AI开发者论坛上发布了这个问题,但我想知道这里是否有人成功使用了intel的sklearn兼容随机森林分类器。
我的下一步是测试原生的daal4py随机森林对象,并可能编写我自己的包装器,因为原生的daal4py API与sklearn非常不同。我希望能避免这样做。intel网站上似乎对包装类的名称有些混淆。
我使用的是:
- 对于k近邻:daal4py.sklearn.neighbors.kdtree_knn_classifier(这个工作得很好)
- 对于随机森林:daal4py.sklearn.ensemble.decision_forest.RandomForestClassifier
intel RandomForestClassifier的失败出现在forest.py中,因为n_classes_是一个整数。n_classes_与传递的标签变量的类别数量相匹配。标签变量是一个整数。
predictions = [np.zeros((n_samples, n_classes_[k])) for k in range(self.n_outputs_)]
回答:
请查看以下我们用于计算daal4py RandomForestClassifier得分的步骤
(i) 对于cross_val_score
from daal4py.sklearn.ensemble.decision_forest import RandomForestClassifierfrom sklearn.model_selection import cross_val_scoreclf = RandomForestClassifier()scores = cross_val_score(clf, train_data, train_labels, cv=3)print(scores)
(ii) 对于GridSearchCV
from sklearn.model_selection import GridSearchCVfrom daal4py.sklearn.ensemble.decision_forest import RandomForestClassifierparam_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)