📅  最后修改于: 2020-04-23 01:12:41             🧑  作者: Mango
决策树是使用类似于流程图的树形结构的决策工具,或者是决策及其所有可能结果(包括结果,投入成本和效用)的模型。
决策树算法属于监督学习算法的范畴。它适用于连续和分类输出变量。
分支/边表示节点的结果,并且节点具有以下任一项:
分支/边表示语句的真/假,并根据以下示例中的内容进行决策,该示例显示了一个决策树,该决策树评估三个数字中的最小数字:
决策树回归:
决策树回归观察对象的特征并在树的结构中训练模型,以预测将来的数据以产生有意义的连续输出。连续输出意味着输出/结果不是离散的,即,它不仅仅由离散的已知数字或值集表示。
离散输出示例:天气预报模型,用于预测特定日子是否会下雨。
连续输出示例:利润预测模型,该模型说明可以从产品销售中产生的可能利润。
在此,借助决策树回归模型预测连续值。
让我们看一下分步实现
# 导入numpy
import numpy as np
# 导入matplotlib.pyplot以绘制结果
import matplotlib.pyplot as plt
# 导入熊猫以导入csv文件
import pandas as pd
# 导入数据集
# 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)
# 利用 : 选择所有行, 还有第一列
X = dataset[:, 1:2].astype(int)
# 打印 X
print(X)
y = dataset[:, 2].astype(int)
# 打印 y
print(y)
# 导入回归器
from sklearn.tree import DecisionTreeRegressor
# 创建一个回归对象
regressor = DecisionTreeRegressor(random_state = 0)
# 用X和Y数据拟合回归
regressor.fit(X, y)
# 预测新值通过更改值来测试输出,例如3750
y_pred = regressor.predict(3750)
# 打印预计价格
print("Predicted price: % d\n"% y_pred)
# 用于创建值范围
# 从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()
# 导入 export_graphviz
from sklearn.tree import export_graphviz
# 将决策树导出到tree.dot文件,以在任何地方轻松可视化绘图
export_graphviz(regressor, out_file ='tree.dot',
feature_names =['Production Cost'])
输出(决策树):