Che*_*ang 6 python random-forest scikit-learn
目前,我正在Sklearn中为我的不平衡数据实现RandomForestClassifier。我不太清楚RF在Sklearn中的工作原理。我的担心如下:
以下是Sklearn中RandomForestClassifier的描述。
“随机森林是一种元估计量,它适合数据集各个子样本上的许多决策树分类器,并使用平均数来提高预测准确性和控制过度拟合。子样本大小始终与原始样本大小相同。输入样本大小,但是如果bootstrap = True(默认值),则用替换绘制样本。”
在这里我之前找到了类似的问题。但是这个问题的答案并不多。
SciKit-Learn随机森林子样本大小如何等于原始训练数据大小?
谢谢!程
没有明显的方法,但是您可以利用中的采样方法sklearn.ensemble.forest。
通过使用set_rf_samples(n),您可以强制树对n行进行子采样,然后调用reset_rf_samples()以对整个数据集进行采样。
from sklearn.ensemble import forest
def set_rf_samples(n):
""" Changes Scikit learn's random forests to give each tree a random sample of
n random rows.
"""
forest._generate_sample_indices = (lambda rs, n_samples:
forest.check_random_state(rs).randint(0, n_samples, n))
def reset_rf_samples():
""" Undoes the changes produced by set_rf_samples.
"""
forest._generate_sample_indices = (lambda rs, n_samples:
forest.check_random_state(rs).randint(0, n_samples, n_samples))
Run Code Online (Sandbox Code Playgroud)
参考:fast.ai
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |