极限森林
与随机森林一样,极限森林也是基于多棵决策树的集成算法,与随机森林的区别在于:随机森林在选取样本时采用样本随机的方式,并使用最好的裂分条件(无论是'gini'还是'entropy',都选用最佳的分裂进行分类);极限森林也是采用随机样本,但其分裂条件也是随机的,并不一定每次都选用最佳的裂分条件,官网上的解释是这样的
像在随机森林中一样,使用候选特征的随机子集,但不是寻找最有区别的阈值,而是为每个候选特征随机绘制阈值,并选择这些随机生成的阈值中的最佳阈值作为划分规则
也就是说,较小的阈值也是有被选择的机会的,相比随机森林,极限森林的灵活度更高,能适应的范围更大(作者本人观点,如有不同见解,欢迎讨论)这就使得在某些情况下极限森林的分类准确度比随机森林的更高
极限森林API
class sklearn.ensemble.ExtraTreesClassifier
极限森林与决策树、随机森林的运行效果比较
from sklearn.ensemble import ExtraTreesClassifier,RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt
X, y = datasets.load_wine(True)
clf = DecisionTreeClassifier()
cross_val_score(clf,X,y,cv = 6,scoring='accuracy').mean()
0.871072796934866
forest = RandomForestClassifier(n_estimators=100)
cross_val_score(forest,X,y,cv = 6,scoring='accuracy').mean()
0.9777777777777779
extra = ExtraTreesClassifier(n_estimators=100)
cross_val_score(extra,X,y,cv = 6,scoring='accuracy').mean()
0.9833333333333334
使用鸢尾花的数据集再次进行尝试
X, y = datasets.load_iris(True)
clf = Decisio