决策树利用已知事件的发生概率,以图解法实现问题的求解,因图解结果类似树状,故称决策树。当由多棵树按众数作为分类决策时,就被称为随机森林。
1.决策树
sklearn中的tree包提供了决策树Decision TreeClassifier类,使用过程与前面提到的支持向量机算法非常类似。对鸢尾花数据库的分类,使用决策树算法的代码如下:
程序:决策树
from sklearn import datasets
from sklearn import tree
iris=datasets.load_iris( )
X=iris.data
y=iris.target
from sklearn.model_selection import train_test_split
data_train,data_test,target_train,target_test=train_test_split(X,y)
dtree=tree.Decision TreeClassifier( )
model=dtree.fit(data_train,target_train)
pred=model.predict(data_test)
error=pred-target_test
print(target_test)
print(error)
程序运行结果如下:
[0 2 2 2 2 2 1 1 0 1 2 2 2 1 1 2 2 0 1 1 0 1 0 1 0 0 1 1 2 0 2 0 1 2 0 2 1 1]
[0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
2.随机森林
随机森林,顾名思义,是存在多棵树的一种判决系统,其输出的类别由不同树输出类别的众数而定。Leo Breiman和Adele Cutler提出随机森林的算法,而“Random Forests”是他们的商标。(www.daowen.com)
sklearn的ensemble包中包含随机森林算法,使用时通过如下语句引用:
from sklearn.ensemble import RandomForestClassifier
采用10棵树形成的随机森林作为判别树,判断鸢尾花数据库的代码如下:
程序:森林
from sklearn import datasets
from sklearn.ensemble import Random ForestClassifier
iris=datasets.load_iris( )
X=iris.data
y=iris.target
from sklearn.model_selection import train_test_split
data_train,data_test,target_train,target_test=train_test_split(X,y)
dtree=RandomForestClassifier(10) #10棵树
model=dtree.fit(data_train,target_train)
pred=model.predict(data_test)
error=pred-target_test
print(target_test)
print(error)
程序运行的结果如下:
[0 0 1 2 2 1 1 1 2 1 2 0 0 1 0 2 1 1 2 1 2 0 0 1 2 0 1 1 2 2 1 0 2 2 0 2 2 1]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0]
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。