机器学习基础算法19-决策树-鸢尾花数据集分类及决策树深度与过拟合

本文介绍了决策树的基本原理,包括它在分类任务中的应用。通过鸢尾花数据集的实例,展示了如何构建决策树,并探讨了决策树的深度与过拟合的关系。文中包含代码实现和运行结果,进一步阐述了使用多个决策树的策略。
摘要由CSDN通过智能技术生成

决策树

决策树(Decision Tree)是一种基本的分类与回归方法,当决策树用于分类时称为分类树,用于回归时称为回归树。主要介绍分类树。

决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点,其中内部结点表示一个特征或属性,叶结点表示一个类。

决策树学算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。根据信息增益准则的特征选择方法:对于训练数据集(或子集),计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
# 生成dot格式文件
import pydotplus

# 花萼长度、花萼宽度,花瓣长度,花瓣宽度
iris_feature_E = 'sepal length', 'sepal width', 'petal length', 'petal width'
iris_feature = u'花萼长度', u'花萼宽度', u'花瓣长度', u'花瓣宽度'
iris_class = 'Iris-setosa', 'Iris-versicolor', 'Iris-virginica'

if __name__ == "__main__":
    # 解决matplotlib不能读取中文的问题
    mpl.rcParams['font.sans-serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False

    # 加载数据
    path = 'iris.data'  # 数据文件路径
    # header=None文件指定了列名
    data = pd.read_csv(path, header=None)
    # print(data)

    # 特征值
    x = data[range(4)]
    # 目标值-由于y为字符串,需要转换成类别数据,再转换成编码-0,1,2
    y = pd.Categorical(data[4]).codes
    # print(y)

    # 为了可视化,仅使用前两列特征
    x = x.iloc[:, :2]
    # 相当于x = x[[0,1]]
    # 分割数据集-训练集与测试集
    x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7, random_state=1)
    print(y_test.shape)

    '''训练模型'''
    # 决策树参数估计
    # DecisionTreeClassifier:决策树分类器
    # 损失函数criterion:gini或者entropy,前者是基尼系数,后者是信息熵。
    # min_samples_split = 10:如果该结点包含的样本数目大于10,则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值