[机器学习系列]深入探索回归决策树:从参数选择到模型可视化

目录

一、回归决策树的参数

二、准备数据

三、构建回归决策树

(一)拟合模型

(二)预测数据

(三)查看特征重要性

(四)查看模型拟合效果

[(五) 可视化回归决策树真实值和预测值](#(五) 可视化回归决策树真实值和预测值)

(六)可视化决策树并保存

部分结果如下:


一、回归决策树的参数

复制代码
DecisionTreeRegressor(*, criterion='mse', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)

具体参数解释可参考下方链接的文档,几乎和分类决策树相差不大

sklearn.tree.DecisionTreeRegressor-scikit-learn中文社区

二、准备数据

复制代码
from sklearn.datasets import load_boston
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

# 加载数据
boston = load_boston()

# 创建DataFrame
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target

# 数据特征和目标变量
X = df.drop('PRICE', axis=1)
y = df['PRICE']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 打印训练集和测试集的形状
print("训练集特征数据形状:", X_train.shape)
print("训练集目标变量形状:", y_train.shape)
print("测试集特征数据形状:", X_test.shape)
print("测试集目标变量形状:", y_test.shape)

三、构建回归决策树

(一)拟合模型

复制代码
from sklearn.tree import DecisionTreeRegressor
clf=DecisionTreeRegressor()
clf = clf.fit(X_train, y_train)

(二)预测数据

复制代码
y_pred=clf.predict(X_test)

(三)查看特征重要性

复制代码
clf.feature_importances_

(四)查看模型拟合效果

复制代码
from sklearn.metrics import r2_score,mean_squared_error, explained_variance_score, mean_absolute_error
print("决策树回归模型测试集R^2:",round(r2_score(y_test,y_pred)))
print("决策树回归模型测试集均方误差:",round(mean_squared_error(y_test,y_pred)))
print("决策树回归模型测试集解释方差分:",round(explained_variance_score(y_test,y_pred)))
print("决策树回归模型测试集绝对误差:",round(mean_absolute_error(y_test,y_pred)))

(五) 可视化回归决策树真实值和预测值

复制代码
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']

# 假设X_test和y_test已经定义好了
plt.figure(figsize=(10, 6))  # 创建一个新的图形,设置大小
plt.plot(range(len(y_test)), y_test, color='blue', label='实际值')  # 绘制散点图,实际值用蓝色表示
plt.plot(range(len(y_pred)), y_pred, color='red', label='预测值')  # 绘制预测值的线,用红色表示
plt.title('决策树回归预测与实际值对比')  # 图表标题
plt.xlabel('测试集样本')  # X轴标签
plt.ylabel('值')  # Y轴标签
plt.legend()  # 显示图例
plt.grid(True)  # 显示网格
plt.show()  # 显示图表

(六)可视化决策树并保存

复制代码
import graphviz
from sklearn import tree
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
 
dot_data = tree.export_graphviz(clf,out_file = None,  
                                filled=True, rounded=True) 
dot_data=dot_data.replace('helvetica', 'SimHei')
graph = graphviz.Source(dot_data) 
graph.render("my_decision_tree", format='png')  # 保存为png格式
 
graph

部分结果如下:

可通过控制树的深度、叶子节点等参数对决策树进行剪枝操作。可以通过网格搜索法进行参数调优。具体可参考往期博客:

决策树分类任务实战(python 代码详解)-CSDN博客

相关推荐
程序员老乔3 分钟前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(一):你的Java该升级了
java·spring boot·python
piepis4 分钟前
Linux 下升级 Python 3.7 → 3.9(离线)并内网安装本地python-packages
linux·运维·python
腾视科技TENSORTEC4 分钟前
安全驾驶 智在掌控|腾视科技ES06终端,为车辆运营赋能
大数据·人工智能·科技·安全·ai·车载系统·车载监控
快快起来写代码5 分钟前
反射可能用于的场景
开发语言·python
Ivanqhz7 分钟前
图着色寄存器分配算法(Graph Coloring)
开发语言·javascript·python·算法·蓝桥杯·rust
2301_819414308 分钟前
Python入门:从零到一的第一个程序
jvm·数据库·python
Elastic 中国社区官方博客13 分钟前
测试 Elasticsearch,现在变得更简单了
大数据·运维·elasticsearch·搜索引擎·全文检索
黎阳之光14 分钟前
十五五智赋新程 黎阳之光以AI硬核技术筑造产业数智底座
大数据·人工智能·算法·安全·数字孪生
1941s16 分钟前
Google Agent Development Kit (ADK) 指南 第三章:核心概念与架构
人工智能·python·langchain·agent·adk