我需要做一些模拟和调试,我想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)
对象a和b应该是相同的,即sum(abs(a-b))应该为零,但是这并非如此.我做错了什么,或者我偶然发现了一些功能?
我能够在R 2.13和R 2.14的两个不同系统上重现这一点
我正在使用该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中,运行"随机森林"模型后,我可以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)
我试图返回rf或fit,但仍然无法在预测文件中加载模型.
您可以使用sklearn随机森林包分离模型和预测吗?
我想评估正在训练某些数据的随机森林.Apache Spark中是否有任何实用程序可以执行相同操作,还是必须手动执行交叉验证?
random-forest cross-validation apache-spark apache-spark-ml apache-spark-mllib
帮助页面randomforest::randomforest()说:
"classwt - 类的推荐.不需要加一个.忽略回归."
classwt当您有大量不平衡数据时,可以设置参数帮助,即.班级的先辈们有很大的不同?
如何classwt在具有3个类的数据集上训练模型时,如果先验矢量等于(p1,p2,p3),并且在测试集先验中是(q1,q2,q3)?
我正在使用scikit-learn来创建一个随机森林.但是,我想找到每棵树的各个深度.这似乎是一个简单的属性,但根据文档,(http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html),无法访问它.
如果这不可能,有没有办法从决策树模型访问树深度?
任何帮助,将不胜感激.谢谢.
在scikit中有一个绝对有用的类GridSearchCV - 学习网格搜索和交叉验证,但我不想做交叉验证.我想在没有交叉验证的情况下进行网格搜索,并使用整个数据进行训练.更具体地说,我需要在网格搜索期间使用"oob得分"评估RandomForestClassifier制作的模型.有简单的方法吗?或者我应该自己上课?
要点是
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返回给我的概率为TRUE或FALSE.相反,我得到的只是预测值.也就是说,如果我看一下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) 我正在使用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位数的例子?
非常感谢您花时间阅读这两个问题及其问题.
当使用 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 调整到这个标准的速度太慢了。
random-forest ×10
python ×5
scikit-learn ×5
r ×4
apache-spark ×1
depth ×1
grid-search ×1
predict ×1