为啥 SKlearn 和 WEKA 结果不匹配?

Posted

技术标签:

【中文标题】为啥 SKlearn 和 WEKA 结果不匹配?【英文标题】:Why SKlearn and WEKA results do not match?为什么 SKlearn 和 WEKA 结果不匹配? 【发布时间】:2018-07-14 05:07:08 【问题描述】:

我有这个dataset,我正在使用 SKlearn 生成如下随机森林模型:

from sklearn.ensemble import RandomForestClassifier as RandomForest
from sklearn.cross_validation import cross_val_score, cross_val_predict
import pandas as pd
import numpy as np
df = pd.read_csv('trainingSetExample.csv')
X_train = df.iloc[:, df.columns != 'label']
y_train = df.ix[:]['label']
clf = RandomForest() 
print np.mean(cross_val_score(clf, X_train, y_train, cv=10))
print 'precision', np.mean(cross_val_score(clf, X_train, y_train, cv=10, scoring='precision_macro'))

准确率和精度都是 0.99,但是当我使用 WEKA 随机森林时,准确率和精度都是 0.95。看起来两者的参数默认值是一样的,另外,我尝试了 WEKA 的 10000 次迭代而不是 100 次,但并没有改善。

为什么结果如此不同?

【问题讨论】:

你也应该贴出Weka的完整代码以及两者使用的数据。 【参考方案1】:

我发现错误是什么,标签被错误地包含在特征中,所以 SKlearn 总是报告高准确率(接近 1),但 WEKA 足够聪明,可以删除该特征并报告实际准确率。删除该列后,它们都匹配。

【讨论】:

以上是关于为啥 SKlearn 和 WEKA 结果不匹配?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn 和 statsmodels 的逻辑回归结果不匹配

评估指标的手动计算与 Sklearn 函数不匹配

为啥 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?

为啥每次建模时间我在 Weka 收到的拍摄时间都不一样?

WEKA:从classifyInstance中获取类,为啥错了

为啥 sklearn 中逻辑回归的等效 class_weights 会产生不同的结果?