• 大小: 32.44MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-06
  • 语言: 其他
  • 标签: 代码  python  分类  

资源简介

以莺尾花数据为例,里面包含决策树的创建,训练,预测,并画出创建后的决策树图像。已附带iris数据集

资源截图

代码片段和文件信息

#!/usr/bin/python
# -*- coding:utf-8 -*-

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
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__“:
    mpl.rcParams[‘font.sans-serif‘] = [u‘SimHei‘]
    mpl.rcParams[‘axes.unicode_minus‘] = False

    path = ‘..\\8.Regression\\iris.data‘  # 数据文件路径
    data = pd.read_csv(path header=None)
    x = data[range(4)]
    y = pd.Categorical(data[4]).codes
    # 为了可视化,仅使用前两列特征
    x = x.iloc[: :2]
    x_train x_test y_train y_test = train_test_split(x y train_size=0.7 random_state=1)
    print y_test.shape

    # 决策树参数估计
    # min_samples_split = 10:如果该结点包含的样本数目大于10,则(有可能)对其分支
    # min_samples_leaf = 10:若将某结点分支后,得到的每个子结点样本数目都大于10,则完成分支;否则,不进行分支
    model = DecisionTreeClassifier(criterion=‘entropy‘)
    model.fit(x_train y_train)
    y_test_hat = model.predict(x_test)      # 测试数据

    # 保存
    # dot -Tpng my.dot -o my.png
    # 1、输出
    with open(‘iris.dot‘ ‘w‘) as f:
        tree.export_graphviz(model out_file=f)
    # 2、给定文件名
    # tree.export_graphviz(model out_file=‘iris1.dot‘)
    # 3、输出为pdf格式
    dot_data = tree.export_graphviz(model out_file=None feature_names=iris_feature_E class_names=iris_class
                                    filled=True rounded=True special_characters=True)
    graph = pydotplus.graph_from_dot_data(dot_data)
    graph.write_pdf(‘iris.pdf‘)
    f = open(‘iris.png‘ ‘wb‘)
    f.write(graph.create_png())
    f.close()

    # 画图
    N M = 50 50  # 横纵各采样多少个值
    x1_min x2_min = x.min()
    x1_max x2_max = x.max()
    t1 = np.linspace(x1_min x1_max N)
    t2 = np.linspace(x2_min x2_max M)
    x1 x2 = np.meshgrid(t1 t2)  # 生成网格采样点
    x_show = np.stack((x1.flat x2.flat) axis=1)  # 测试点
    print x_show.shape

    # # 无意义,只是为了凑另外两个维度
    # # 打开该注释前,确保注释掉x = x[: :2]
    # x3 = np.ones(x1.size) * np.average(x[: 2])
    # x4 = np.ones(x1.size) * np.average(x[: 3])
    # x_test = np.stack((x1.flat x2.flat x3 x4) axis=1)  # 测试点

    cm_light = mpl.colors.ListedColormap([‘#A0FFA0‘ ‘#FFA0A0‘ ‘#A0A0FF‘])
    cm_dark = mpl.colors.ListedColormap([‘g‘ ‘r‘ ‘b‘])
    y_show_hat = model.predict(x_show)  # 预测值
    print y_show_hat.shape
    print y_show_hat
    y_show_hat = y_show_hat.reshape(x1.shape)  # 使之与输入的形状相同
    print y_show_hat
    plt.figure(facecolor=‘w‘)
    plt.pcolormesh(x1 x2 y_show_hat cmap=cm_light)  # 预测值的显示
    plt.scatter(x_test[0] x_test[1] c=y_test.ravel() edgecolors=‘k‘ s=150 zorder=10 cmap=cm_dark marker=‘*‘)  # 测试数据
    plt.scatter(x[0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-04-03 20:08  10.RandomForest\
     目录           0  2017-04-03 20:08  10.RandomForest\.idea\
     文件         459  2017-04-03 13:20  10.RandomForest\.idea\10.RandomForest.iml
     文件         687  2017-04-03 13:20  10.RandomForest\.idea\misc.xml
     文件         282  2017-04-03 15:50  10.RandomForest\.idea\modules.xml
     文件       33260  2017-04-03 15:51  10.RandomForest\.idea\workspace.xml
     文件        4872  2017-04-03 13:49  10.RandomForest\10.1.Iris_DecisionTree.py
     文件        2620  2017-04-03 14:50  10.RandomForest\10.2.Iris_DecisionTree_Enum.py
     文件        1282  2017-02-10 22:47  10.RandomForest\10.3.DecisionTreeRegressor.py
     文件        1475  2017-04-03 14:38  10.RandomForest\10.4.MultiOutput_DTR.py
     文件        2754  2017-04-03 14:50  10.RandomForest\10.5.Iris_RandomForest_Enum.py
     文件        2026  2017-04-03 14:51  10.RandomForest\10.6.Bagging.py
     文件    35831808  2016-11-03 12:11  10.RandomForest\graphviz-2.38.msi
     文件        5632  2017-04-03 13:48  10.RandomForest\iris.dot
     文件       30639  2017-04-03 13:48  10.RandomForest\iris.pdf
     文件      567161  2017-04-03 13:48  10.RandomForest\iris.png

评论

共有 条评论