主要问题:我如何将python和scikit中的不同randomForests结合起来--学习?
我目前正在使用R中的randomForest包来使用弹性映射约简来生成随机森林对象。这是为了解决分类问题。
由于输入数据太大,无法在一台机器上容纳内存,所以我将数据采样到较小的数据集中,并生成包含较小树集的随机森林对象。然后,我使用一个修改的组合函数将不同的树组合在一起,以创建一个新的随机森林对象。这个随机森林对象包含了树的特征、重要性和最终集合。这不包括oob错误或树的投票。
虽然这在R中运行得很好,但我想在Python中使用scikit来做同样的事情--学习。我可以创建不同的随机森林对象,但是我没有任何方法将它们组合在一起形成一个新的对象。有人能指给我一个能把森林结合起来的函数吗?这有可能使用科学知识吗?
这是一个关于如何在R:R中不同训练集的随机林组合中处理这个过程的问题的链接。
编辑:生成的随机森林对象应该包含可用于预测的树以及特性的重要性。
任何帮助都将不胜感激。
发布于 2014-09-19 03:29:09
当然,只是聚合了所有的树,例如,查看了来自双列的这个片段
def combine(all_ensembles):
"""Combine the sub-estimators of a group of ensembles
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> iris = load_iris()
>>> X, y = iris.data, iris.target
>>> all_ensembles = [ExtraTreesClassifier(n_estimators=4).fit(X, y)
... for i in range(3)]
>>> big = combine(all_ensembles)
>>> len(big.estimators_)
12
>>> big.n_estimators
12
>>> big.score(X, y)
1.0
"""
final_ensemble = copy(all_ensembles[0])
final_ensemble.estimators_ = []
for ensemble in all_ensembles:
final_ensemble.estimators_ += ensemble.estimators_
# Required in old versions of sklearn
final_ensemble.n_estimators = len(final_ensemble.estimators_)
return final_ensemble发布于 2014-09-18 20:36:47
根据您的编辑,听起来您只是在询问如何提取特性的重要性,并查看在随机林中使用的单个树。如果是这样的话,这两个属性都是随机森林模型"feature_importances_“和"estimators_”的属性。下面是说明这一点的一个例子:
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.datasets import make_blobs
>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,random_state=0)
>>> clf = RandomForestClassifier(n_estimators=5, max_depth=None, min_samples_split=1, random_state=0)
>>> clf.fit(X,y)
RandomForestClassifier(bootstrap=True, compute_importances=None,
criterion='gini', max_depth=None, max_features='auto',
min_density=None, min_samples_leaf=1, min_samples_split=1,
n_estimators=5, n_jobs=1, oob_score=False, random_state=0,
verbose=0)
>>> clf.feature_importances_
array([ 0.09396245, 0.07052027, 0.09951226, 0.09095071, 0.08926362,
0.112209 , 0.09137607, 0.11771107, 0.11297425, 0.1215203 ])
>>> clf.estimators_
[DecisionTreeClassifier(compute_importances=None, criterion='gini',
max_depth=None, max_features='auto', min_density=None,
min_samples_leaf=1, min_samples_split=1,
random_state=<mtrand.RandomState object at 0x2b6f62d9b408>,
splitter='best'), DecisionTreeClassifier(compute_importances=None, criterion='gini',
max_depth=None, max_features='auto', min_density=None,
min_samples_leaf=1, min_samples_split=1,
random_state=<mtrand.RandomState object at 0x2b6f62d9b3f0>,
splitter='best'), DecisionTreeClassifier(compute_importances=None, criterion='gini',
max_depth=None, max_features='auto', min_density=None,
min_samples_leaf=1, min_samples_split=1,
random_state=<mtrand.RandomState object at 0x2b6f62d9b420>,
splitter='best'), DecisionTreeClassifier(compute_importances=None, criterion='gini',
max_depth=None, max_features='auto', min_density=None,
min_samples_leaf=1, min_samples_split=1,
random_state=<mtrand.RandomState object at 0x2b6f62d9b438>,
splitter='best'), DecisionTreeClassifier(compute_importances=None, criterion='gini',
max_depth=None, max_features='auto', min_density=None,
min_samples_leaf=1, min_samples_split=1,
random_state=<mtrand.RandomState object at 0x2b6f62d9b450>,
splitter='best')]https://stackoverflow.com/questions/25914320
复制相似问题