📜  Python | 使用sklearn进行决策树回归

📅  最后修改于: 2020-04-23 01:12:41             🧑  作者: Mango

决策树是使用类似于流程图的树形结构的决策工具,或者是决策及其所有可能结果(包括结果,投入成本和效用)的模型。
决策树算法属于监督学习算法的范畴。它适用于连续和分类输出变量。
分支/边表示节点的结果,并且节点具有以下任一项:

  1. 条件[决策节点]
  2. 结果[终端节点]

分支/边表示语句的真/假,并根据以下示例中的内容进行决策,该示例显示了一个决策树,该决策树评估三个数字中的最小数字:


决策树回归:
决策树回归观察对象的特征并在树的结构中训练模型,以预测将来的数据以产生有意义的连续输出。连续输出意味着输出/结果不是离散的,即,它不仅仅由离散的已知数字或值集表示。
离散输出示例:天气预报模型,用于预测特定日子是否会下雨。
连续输出示例:利润预测模型,该模型说明可以从产品销售中产生的可能利润。
在此,借助决策树回归模型预测连续值。
让我们看一下分步实现

  • 步骤1:导入所需的库。
    # 导入numpy
    import numpy as np
    # 导入matplotlib.pyplot以绘制结果
    import matplotlib.pyplot as plt
    # 导入熊猫以导入csv文件
    import pandas as pd
  • 步骤2:初始化并打印数据集。
    # 导入数据集
    # dataset = pd.read_csv('Data.csv')
    # 或者打开.csv文件以读取数据
    dataset = np.array(
    [['Asset Flip', 100, 1000],
    ['Text Based', 500, 3000],
    ['Visual Novel', 1500, 5000],
    ['2D Pixel Art', 3500, 8000],
    ['2D Vector Art', 5000, 6500],
    ['Strategy', 6000, 7000],
    ['First Person Shooter', 8000, 15000],
    ['Simulator', 9500, 20000],
    ['Racing', 12000, 21000],
    ['RPG', 14000, 25000],
    ['Sandbox', 15500, 27000],
    ['Open-World', 16500, 30000],
    ['MMOFPS', 25000, 52000],
    ['MMORPG', 30000, 80000]
    ])
    # 打印数据集
    print(dataset)

     

  • 步骤3:从数据集中选择所有行和列1到“ X”。
    # 利用 : 选择所有行, 还有第一列
    X = dataset[:, 1:2].astype(int)
    # 打印 X
    print(X)

  • 步骤4:从数据集中选择所有行和列2到“ y”。
    y = dataset[:, 2].astype(int)
    # 打印 y
    print(y)

     

  • 步骤5:将决策树回归器拟合到数据集
    # 导入回归器
    from sklearn.tree import DecisionTreeRegressor
    # 创建一个回归对象
    regressor = DecisionTreeRegressor(random_state = 0)
    # 用X和Y数据拟合回归
    regressor.fit(X, y)

     

  • 步骤6:预测新值
    # 预测新值通过更改值来测试输出,例如3750
    y_pred = regressor.predict(3750)
    # 打印预计价格
    print("Predicted price: % d\n"% y_pred)

     

  • 步骤7:可视化结果
    # 用于创建值范​​围
    # 从X的最小值到X的最大值的范围,两个连续值之间的差值为0.01
    X_grid = np.arange(min(X), max(X), 0.01)
    # 调整形状以将数据重塑为len(X_grid)* 1数组
    X_grid = X_grid.reshape((len(X_grid), 1))
    # 原始数据的散点图
    plt.scatter(X, y, color = 'red')
    # 绘制预测数据
    plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')
    # 指定标题
    plt.title('Profit to Production Cost (Decision Tree Regression)')
    # 指定X轴标签
    plt.xlabel('Production Cost')
    # 指定Y轴标签
    plt.ylabel('Profit')
    # 显示图
    plt.show()

     

  • 步骤8:最后将树导出,并显示在下面的树结构中,通过复制“ tree.dot”文件中的数据,使用http://www.webgraphviz.com/对其进行可视化。
    # 导入 export_graphviz
    from sklearn.tree import export_graphviz
    # 将决策树导出到tree.dot文件,以在任何地方轻松可视化绘图
    export_graphviz(regressor, out_file ='tree.dot',
                   feature_names =['Production Cost'])

    输出(决策树):