- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用相同的 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/
由于某种原因,每当我运行 ensemble.RandomForestClassifier() 并使用 .predict_proba() 方法时,它都会返回一个形状为 [n_classes, n_sam
我正在测试这段代码。 df1 = df[['Group', 'Sector', 'Cat2', 'Cat3', 'Cat4', 'Cat5', 'Cat6', 'Industry', 'Market'
我正在使用一个在每次迭代时生成数据的环境。我想保留先前迭代中的模型并将新数据添加到现有模型中。 我想了解模型拟合的工作原理。它将使新数据与现有模型相匹配,还是会使用新数据创建新模型。 调用新数据的拟合
我编写了以下 Python 代码,用于在 UCI ML 存储库的 Forest CoverType 数据集上运行 RandomForestClassifier(使用默认参数设置)。然而,结果很差,准确
from sklearn.ensemble import RandomForestClassifier from sklearn import tree rf = RandomForestClassi
我正在尝试攻击我的随机森林分类器。 clf = RandomForestClassifier(max_features="sqrt", n_estimators=500, n_jobs=-1, ver
在 section 1.9.2.1 中的 scikit-learn 文档中(摘录如下),为什么随机森林的实现与 Breiman 的原始论文不同?据我所知,在聚合分类器的集合时,Breiman 选择了多
我使用以下代码可视化 RandomForestClassifier 的结果: X, y = make_blobs(n_samples=300, centers=4,
我是机器学习新手,我正在尝试使用 scikit RandomForestClassifier 对文本进行分类。我遇到的问题是我的测试数据结果与 sklearn 分类报告不匹配。训练集大约有 25k 个
我一直在使用 sklearn 的随机森林,并且尝试比较几个模型。然后我注意到即使使用相同的种子,随机森林也会给出不同的结果。我尝试了两种方法:random.seed(1234) 以及使用随机森林内置的
这是一个新手问题。 我想使用 sklearn 中的 RandomForestClassifier 训练一个 Random Forest。我有几个变量,但在这些变量中,我希望算法在它训练的每一棵树中确定
在机器学习方面,我是初学者,我无法解释我从第一个程序中获得的一些结果。这是设置: 我有一个书评数据集。这些书可以用大约 1600 本书中的任意数量的限定符来标记。评论这些书的人也可以用这些限定符来标记
我正在尝试用中等大小的 numpy float 组来填充森林 In [3]: data.shape Out[3]: (401125, 5) [...] forest = forest.fit(data
我正在 RandomForestClassifier 上进行网格搜索,我的代码一直在工作,直到我更改了功能,然后代码突然生成以下错误(在 classifier.fit 行) 我没有更改任何代码,只是将
我正在 RandomForestClassifier 上进行网格搜索,我的代码一直在工作,直到我更改了功能,然后代码突然生成以下错误(在 classifier.fit 行) 我没有更改任何代码,只是将
我使用 ml.classification.RandomForestClassifier 构建了随机森林模型。我试图从模型中提取预测概率,但我只看到了预测类而不是概率。根据这个issue link ,
我正在使用 Scikit RandomForestClassifier 对不平衡数据进行分类。目标类数据为“1”或“0”(99% 的值为 0)。 我想分配一个权重。我怎样才能做到这一点。 我在文档中发
如何访问单个树并保存/加载 RandomForestClassifier 对象? 我只想查看每棵树的结构以确定哪个特征是重要的。我想将经过训练的分类器对象保存在文件或数据库中。怎么做? 最佳答案 您基
我正在尝试训练一个决策树模型,保存它,然后在我以后需要时重新加载它。但是,我不断收到以下错误: This DecisionTreeClassifier instance is not fitted y
我一直在运行此 website 上显示的“平均降低精度”度量的实现: 在示例中,作者使用的是随机森林回归器 RandomForestRegressor,但我使用的是随机森林分类器 RandomFore
我是一名优秀的程序员,十分优秀!