引包
import pandas as pd
from sklearn import preprocessing
from sklearn import tree
from sklearn.datasets import load_boston # 波士顿房价
加载数据
boston_house = load_boston()
boston_feature_name = boston_house.feature_names
boston_features = boston_house.data
boston_target = boston_house.target
boston_feature_name # 特征名称 不懂可以用 boston_house.DESCR 查看
# 查看前5行
boston_features[:5,:]
构建模型
rgs = tree.DecisionTreeRegressor(max_depth=4)
rgs = rgs.fit(boston_features,boston_target)
可视化
import pydotplus
from IPython.display import Image,display
dot_data = tree.export_graphviz(rgs,
out_file=None,
feature_names = boston_feature_name,
class_names = boston_target,
filled = True,
rounded = True
) # 输出文件 特征 目标 填充颜色
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/' #注意修改你的路径
graph = pydotplus.graph_from_dot_data(dot_data)
display(Image(graph.create_png()))

小结
回归树模型:
- 把整个特征空间切分成不相交的子区域
- 每个区域与古城该区域样本的均值
回归树构建
- 自顶向下贪婪式二分希望最小化RSS
- 可以通过正则化项去控制过拟合