gpt4 book ai didi

python - 为什么 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?

转载 作者:行者123 更新时间:2023-11-28 16:44:50 24 4
gpt4 key购买 nike

在使用相同的 RandomForest 技术和相同的数据集时,我在 WEKA 和 scikit 之间得到了奇怪的结果差异。使用 scikit,我得到的 AUC 约为 0.62(一直以来,因为我进行了广泛的测试)。然而,使用 WEKA,我得到的结果接近 0.79。这是一个巨大的差异!

我测试算法的数据集是 KC1.arff,我将其副本放在我的公共(public)保管箱文件夹中 https://dl.dropbox.com/u/30688032/KC1.arff .对于 WEKA,我只是从 http://www.cs.waikato.ac.nz/ml/weka/downloading.html 下载了 .jar 文件。 .在 WEKA 中,我将交叉验证参数设置为 10 倍,数据集设置为 KC1.arff,算法设置为“RandomForest -l 19 -K 0 -S 1”。然后运行代码!在 WEKA 中生成结果后,应将其保存为文件、.csv 或 .arff。阅读该文件并检查“Area_under_ROC”列,它应该有点接近 0.79。

下面是scikit的RandomForest的代码

import numpy as np
from pandas import *
from sklearn.ensemble import RandomForestClassifier

def read_arff(f):
from scipy.io import arff
data, meta = arff.loadarff(f)
return DataFrame(data)

def kfold(clr,X,y,folds=10):
from sklearn.cross_validation import StratifiedKFold
from sklearn import metrics
auc_sum=0
kf = StratifiedKFold(y, folds)
for train_index, test_index in kf:
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
clr.fit(X_train, y_train)
pred_test = clr.predict(X_test)
print metrics.auc_score(y_test,pred_test)
auc_sum+=metrics.auc_score(y_test,pred_test)

print 'AUC: ', auc_sum/folds
print "----------------------------"



#read the dataset
X=read_arff('KC1.arff')
y=X['Defective']

#changes N, and Y to 0, and 1 respectively
s = np.unique(y)
mapping = Series([x[0] for x in enumerate(s)], index = s)
y=y.map(mapping)
del X['Defective']

#initialize random forests (by defualt it is set to 10 trees)
rf=RandomForestClassifier()

#run algorithm
kfold(rf,np.array(X),y)

#You will get an average AUC around 0.62 as opposed to 0.79 in WEKA

请记住,相关论文的实验结果显示的真实 auc 值约为 0.79,因此问题出在我使用 scikit 随机森林的实现上。

非常感谢您的帮助!!

非常感谢!

最佳答案

在 scikit-learn issue tracker 上发布问题后,我得到的反馈是问题出在我使用的“预测”函数中。它应该是“pred_test = clr.predict_proba(X_test)[:, 1]”而不是“pred_test = clr.predict(X_test)”,因为分类问题是二元的:0 或 1。

实现更改后,结果证明 WEKA 和 scikit 的随机森林的结果相同 :)

关于python - 为什么 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com