标签: random-forest

如何使用foreach和doMC包为随机模拟设置种子?

我需要做一些模拟和调试,我想set.seed用来获得相同的结果.这是我想要做的例子:

library(foreach)
library(doMC)
registerDoMC(2)

set.seed(123)
a <- foreach(i=1:2,.combine=cbind) %dopar% {rnorm(5)}
set.seed(123)
b <- foreach(i=1:2,.combine=cbind) %dopar% {rnorm(5)}
Run Code Online (Sandbox Code Playgroud)

对象ab应该是相同的,即sum(abs(a-b))应该为零,但是这并非如此.我做错了什么,或者我偶然发现了一些功能?

我能够在R 2.13和R 2.14的两个不同系统上重现这一点

parallel-processing r random-forest

23
推荐指数
4
解决办法
7411
查看次数

关于加快随机森林的建议

我正在使用该randomForest包进行一些工作,虽然它运行良好,但它可能非常耗时.任何人都有加快速度的建议吗?我正在使用带有双核AMD芯片的Windows 7机箱.我知道关于R不是多线程/处理器,但如果任何并行包(的好奇rmpi,snow,snowfall等)工作过randomForest的东西.谢谢.

编辑:

我正在使用rF进行一些分类工作(0和1).数据有大约8-12个可变列,训练集是10k行的样本,因此它的体积适中但不疯狂.我正在运行500棵树和2只,3只或4只.

编辑2:这是一些输出:

> head(t22)
  Id Fail     CCUse Age S-TFail         DR MonInc #OpenLines L-TFail RE M-TFail Dep
1  1    1 0.7661266  45       2 0.80298213   9120         13       0  6       0   2
2  2    0 0.9571510  40       0 0.12187620   2600          4       0  0       0   1
3  3    0 0.6581801  38       1 0.08511338   3042          2       1  0       0   0
4  4    0 0.2338098  30       0 0.03604968   3300          5       0  0       0 …
Run Code Online (Sandbox Code Playgroud)

r random-forest

22
推荐指数
4
解决办法
2万
查看次数

将python随机林模型保存到文件

在R中,运行"随机森林"模型后,我可以save.image("***.RData")用来存储模型.之后,我可以加载模型直接进行预测.

你能在python中做类似的事吗?我将模型和预测分成两个文件.在模型文件中:

rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
fit= rf.fit(Predx, Predy)
Run Code Online (Sandbox Code Playgroud)

我试图返回rffit,但仍然无法在预测文件中加载模型.

您可以使用sklearn随机森林包分离模型和预测吗?

python machine-learning random-forest scikit-learn

21
推荐指数
2
解决办法
2万
查看次数

如何交叉验证RandomForest模型?

我想评估正在训练某些数据的随机森林.Apache Spark中是否有任何实用程序可以执行相同操作,还是必须手动执行交叉验证?

random-forest cross-validation apache-spark apache-spark-ml apache-spark-mllib

21
推荐指数
1
解决办法
2万
查看次数

R中RandomForest包中的RandomForest函数中的参数'classwt'代表什么?

帮助页面randomforest::randomforest()说:

"classwt - 类的推荐.不需要加一个.忽略回归."

classwt当您有大量不平衡数据时,可以设置参数帮助,即.班级的先辈们有很大的不同?

如何classwt在具有3个类的数据集上训练模型时,如果先验矢量等于(p1,p2,p3),并且在测试集先验中是(q1,q2,q3)?

r random-forest

20
推荐指数
1
解决办法
1万
查看次数

如何在Python的scikit-learn中访问树深度?

我正在使用scikit-learn来创建一个随机森林.但是,我想找到每棵树的各个深度.这似乎是一个简单的属性,但根据文档,(http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html),无法访问它.

如果这不可能,有没有办法从决策树模型访问树深度?

任何帮助,将不胜感激.谢谢.

python decision-tree depth random-forest scikit-learn

20
推荐指数
1
解决办法
8888
查看次数

在python中没有交叉验证的网格搜索有简单的方法吗?

在scikit中有一个绝对有用的类GridSearchCV - 学习网格搜索和交叉验证,但我不想做交叉验证.我想在没有交叉验证的情况下进行网格搜索,并使用整个数据进行训练.更具体地说,我需要在网格搜索期间使用"oob得分"评估RandomForestClassifier制作的模型.有简单的方法吗?或者我应该自己上课?

要点是

  • 我想用简单的方法进行网格搜索.
  • 我不想做交叉验证.
  • 我需要使用整个数据来训练.(不想分开训练数据和测试数据)
  • 我需要在网格搜索期间使用oob分数进行评估.

python random-forest scikit-learn grid-search

20
推荐指数
2
解决办法
9883
查看次数

在R中使用randomForest包,如何从分类模型中获取概率?

TL; DR:

我可以在原始 randomForest 调用中 标记一些内容,以避免重新运行predict 函数以获得预测的分类概率,而不仅仅是可能的类别吗?

细节:

我正在使用randomForest包.

我有一个类似的模型:

model <- randomForest(x=out.data[train.rows, feature.cols],
                      y=out.data[train.rows, response.col],
                      xtest=out.data[test.rows, feature.cols],
                      ytest=out.data[test.rows, response.col],
                      importance= TRUE)
Run Code Online (Sandbox Code Playgroud)

out.data数据框在哪里,具有feature.cols数字和分类特征的混合,response.col而是一个TRUE/ FALSE二进制变量,我被强制插入,factor以便randomForest模型将其正确地视为分类.

一切运行良好,变量model正确返回给我.但是,我似乎无法找到传递给randomForest函数的标志或参数,因此model返回给我的概率TRUEFALSE.相反,我得到的只是预测值.也就是说,如果我看一下model$predicted,我会看到类似的东西:

FALSE
FALSE
TRUE
TRUE
FALSE
.
.
.
Run Code Online (Sandbox Code Playgroud)

相反,我希望看到类似的东西:

   FALSE  TRUE
1  0.84   0.16
2  0.66   0.34
3  0.11   0.89
4  0.17   0.83
5  0.92 …
Run Code Online (Sandbox Code Playgroud)

r machine-learning predict random-forest

19
推荐指数
1
解决办法
3万
查看次数

以安全和正确的方式使用RandomForestClassifier的predict_proba()函数

我正在使用Scikit学习在我的数据集上应用机器学习算法.有时我需要设置标签/类本身的标签/类的概率.我没有将垃圾邮件/非垃圾邮件作为电子邮件的标签,而是希望仅举例:给定电子邮件是垃圾邮件的概率为0.78.

出于这个目的,我使用带有RandomForestClassifier的predict_proba()如下:

clf = RandomForestClassifier(n_estimators=10, max_depth=None,
    min_samples_split=1, random_state=0)
scores = cross_val_score(clf, X, y)
print(scores.mean())

classifier = clf.fit(X,y)
predictions = classifier.predict_proba(Xtest)
print(predictions)
Run Code Online (Sandbox Code Playgroud)

我得到了这些结果:

 [ 0.4  0.6]
 [ 0.1  0.9]
 [ 0.2  0.8]
 [ 0.7  0.3]
 [ 0.3  0.7]
 [ 0.3  0.7]
 [ 0.7  0.3]
 [ 0.4  0.6]
Run Code Online (Sandbox Code Playgroud)

第二列用于课程:垃圾邮件.但是,我对结果有两个主要问题,我对此并不自信.第一个问题是结果表示标签的概率而不受数据大小的影响?第二个问题是结果只显示一个数字,在0.701概率与0.708非常不同的某些情况下不是非常具体.有没有办法获得下一个5位数的例子?

非常感谢您花时间阅读这两个问题及其问题.

python machine-learning random-forest scikit-learn

19
推荐指数
3
解决办法
4万
查看次数

与 MSE 相比,为什么使用 MAE 标准训练随机森林回归器如此之慢?

当使用 sklearn 的 RandomForestRegress 的平均绝对误差标准对小型应用程序(<50K 行 <50 列)进行训练时,它比使用均方误差慢近 10 倍。为了说明即使在一个小数据集上:

import time
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import load_boston

X, y = load_boston(return_X_y=True)

def fit_rf_criteria(criterion, X=X, y=y):
    reg = RandomForestRegressor(n_estimators=100,
                                criterion=criterion,
                                n_jobs=-1,
                                random_state=1)
    start = time.time()
    reg.fit(X, y)
    end = time.time()
    print(end - start)

fit_rf_criteria('mse')  # 0.13266682624816895
fit_rf_criteria('mae')  # 1.26043701171875
Run Code Online (Sandbox Code Playgroud)

为什么使用 'mae' 标准训练 RandomForestRegressor 需要这么长时间?我想为更大的应用程序优化 MAE,但发现 RandomForestRegressor 调整到这个标准的速度太慢了。

python random-forest scikit-learn

19
推荐指数
1
解决办法
4541
查看次数