美文网首页机器学习与数据挖掘大数据大数据 爬虫Python AI Sql
数据分析实战--决策树与随机森林鸢尾花分类

数据分析实战--决策树与随机森林鸢尾花分类

作者: 勤奋的土豆鹿鹿 | 来源:发表于2019-04-27 02:34 被阅读1次

本文考虑从鸢尾花数据集四个特征中取出两个特征,用决策树和随机森林分别进行预测。数据集可关注文末公众号回复:“鸢尾花”

0 模块导入

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

1 数据处理

data = pd.read_csv('8.iris.data',header=None)
data.rename(columns={0:'花萼长度',1: '花萼宽度', 2:'花瓣长度', 3:'花瓣宽度',4:'类型'},inplace=True)
map = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
data['类型'] = data['类型'].map(map)
feature = ['花萼长度','花萼宽度', '花瓣长度', '花瓣宽度']

2 两个特征进行组合

本文考虑从四个特征中取出两个特征,用决策树和随机森林分别进行预测

(1)用决策树做

for i in range(len(feature)):
    for j in range(i+1,len(feature)):
        best = 0
        x = data[[feature[i],feature[j]]]
        y = data['类型'] 
#        决策树&交叉验证
        print('特征组合:',feature[i],feature[j])
#        决策树最佳深度查找
        scores_plt=[]
        depth = [2,4,6,8]
        for d in depth:
            dtc = DecisionTreeClassifier(criterion='entropy',max_depth = d)
            scores = cross_val_score(dtc,x,y,scoring='accuracy',cv=5)
            scores_plt.append(scores.mean())
            print('准确率:',scores.mean()) 
        if best < np.max(scores_plt):
            best = np.max(scores_plt)
            types = '%s和%s组合'%(feature[i],feature[j])
        plt.plot(depth,scores_plt,'--o',label='%s和%s组合'%(feature[i],feature[j]))
        plt.legend()
print('\n最佳组合为:%s,\n准确率为:%.2f%%'%(types,best*100))

image

输出结果


特征组合: 花萼长度 花萼宽度
准确率: 0.6666666666666667
准确率: 0.7666666666666667
准确率: 0.7133333333333333
准确率: 0.7
特征组合: 花萼长度 花瓣长度
准确率: 0.9466666666666667
准确率: 0.9333333333333333
准确率: 0.9333333333333333
准确率: 0.9266666666666667
特征组合: 花萼长度 花瓣宽度
准确率: 0.9400000000000001
准确率: 0.9466666666666667
准确率: 0.9400000000000001
准确率: 0.9266666666666665
特征组合: 花萼宽度 花瓣长度
准确率: 0.9466666666666667
准确率: 0.9200000000000002
准确率: 0.9133333333333334
准确率: 0.9200000000000002
特征组合: 花萼宽度 花瓣宽度
准确率: 0.9400000000000001
准确率: 0.9466666666666667
准确率: 0.9266666666666665
准确率: 0.9399999999999998
特征组合: 花瓣长度 花瓣宽度
准确率: 0.9333333333333332
准确率: 0.9600000000000002
准确率: 0.9600000000000002
准确率: 0.9533333333333334

由图和输出可知:最佳组合为:花瓣长度和花瓣宽度组合,准确率为:96.00%

(2) 使用随机森林

这边使用了网格搜索进行参数的调整


for i in range(len(feature)):
    for j in range(i+1,len(feature)):  
        x = data[[feature[i],feature[j]]]
        y = data['类型'] 
        rfc = RandomForestClassifier(criterion='entropy')
        depth = [2,4,6,8]
        model = GridSearchCV(rfc, param_grid={'max_depth':depth},cv=5)
        model.fit(x,y)
        print('特征组合:',feature[i],feature[j])
        print('最佳参数:',model.best_params_)
        scores_rfc = cross_val_score(model,x,y,cv=3,scoring='accuracy')
        print('准确率为:%.2f%%'%(scores_rfc.mean()*100)) 

结果:

特征组合: 花萼长度 花萼宽度
最佳参数: {'max_depth': 4}
准确率为:73.33%
特征组合: 花萼长度 花瓣长度
最佳参数: {'max_depth': 4}
准确率为:92.03%
特征组合: 花萼长度 花瓣宽度
最佳参数: {'max_depth': 4}
准确率为:94.73%
特征组合: 花萼宽度 花瓣长度
最佳参数: {'max_depth': 4}
准确率为:93.42%
特征组合: 花萼宽度 花瓣宽度
最佳参数: {'max_depth': 4}
准确率为:94.69%
特征组合: 花瓣长度 花瓣宽度
最佳参数: {'max_depth': 6}
准确率为:96.04%

随机森林预测的准确度略微高点,两者的最佳组合预测结果一致,均为花瓣长度+花瓣宽度组合

欢迎关注[小鹿数据分析]


二维码.jpg

相关文章

  • 数据分析实战--决策树与随机森林鸢尾花分类

    本文考虑从鸢尾花数据集四个特征中取出两个特征,用决策树和随机森林分别进行预测。数据集可关注文末公众号回复:“鸢尾花...

  • 随机森林-Python

    这里随机森林分类器的预测可视化与决策树差不多,因为随机森林就是决策树投票得到的结果。代码: 关键代码:plt.sc...

  • 用决策树和随机森林解决泰坦尼克号沉没问题

    决策树和随机森林既可以解决分类问题,也可以解决预测问题。 随机森林属于集成算法,森林从字面理解就是由多棵决策树构成...

  • 第八章 数据决策分析算法——基于随机森林的决策分类

    8.4 基于随机森林的决策分类 随机森林是一种一个包含多个决策树的分类器,是用随机的方法建立一个森林,森林里面由很...

  • 决策树与随机森林及其在SparkMllib中的使用

    一.概念 决策树和随机森林:决策树和随机森林都是非线性有监督的分类模型。 决策树是一种树形结构,树内部每个节点表示...

  • 随机森林

    随机森林是一种分类算法,实战中往往比较有用。 简介:如其名,算法里面有一些随机性,另外,主要的思想是很多的决策树(...

  • 随机森林

    随机森林(RandomForest), 可用于分类或者回归, 相比较决策树的算法, 随机森林是由多棵CART(Cl...

  • 新2019计划:机器学习100天—随机森林【8】

    随机森林 随机森林是有监督的集成学习模型,主要用于分类和回归。随机森林建立了很多决策树,然后将其集成,以获得更准确...

  • 机器学习算法分类

    机器学习算法分类 监督学习(预测)分类:K-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络回归:线性回...

  • 17. 决策树参数实例

    使用鸢尾花数据集构建决策树 决策树参数 1 熵/Gini系数作为评判指标 2 splitter: 所有或随机在特征...

网友评论

    本文标题:数据分析实战--决策树与随机森林鸢尾花分类

    本文链接:https://www.haomeiwen.com/subject/aexhnqtx.html