为啥 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 的逻辑回归结果不匹配
为啥 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?