Python中的决策树算法探索

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: Python中的决策树算法探索

Python中的决策树算法探索

 

决策树是一种用于分类和回归的非参数监督学习方法。它的目标是创建一个模型,通过学习简单的决策规则从数据特征中推断出目标变量的值。决策树直观且易于理解,广泛应用于各种领域。本文将介绍如何在Python中使用决策树算法进行数据分类和回归,并附带示例代码。

 

1. 决策树的基本概念

 

决策树由节点和边组成:

- **根节点**:表示整个样本的初始特征。

- **内部节点**:表示一个特征的测试。

- **叶节点**:表示决策结果。

 

2. 使用决策树进行分类

 

在分类问题中,决策树将数据划分为不同的类别。以下是一个使用Scikit-learn库进行分类的示例。

 

2.1 数据准备

 

首先,导入必要的库,并加载示例数据集。这次我们使用著名的鸢尾花数据集。

 

```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
import matplotlib.pyplot as plt
 
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
 
# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```

 

2.2 训练决策树分类器

 

接下来,创建一个决策树分类器并进行训练。

```python
# 创建决策树分类器
clf = DecisionTreeClassifier()
 
# 训练模型
clf.fit(X_train, y_train)
```

 

2.3 模型评估

 

使用测试数据评估模型性能。

 

```python
# 预测测试集
y_pred = clf.predict(X_test)
 
# 计算准确率
accuracy = sum(y_pred == y_test) / len(y_test)
print(f'Accuracy: {accuracy:.2f}')
```

 

2.4 可视化决策树

 

使用Matplotlib库和Scikit-learn内置函数对决策树进行可视化。

 

```python
plt.figure(figsize=(20,10))
tree.plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()
```

 

3. 使用决策树进行回归

 

在回归问题中,决策树用于预测连续的目标变量。下面是一个使用决策树进行回归的示例。

 

3.1 数据准备

 

我们使用Scikit-learn自带的波士顿房价数据集。

 

```python
from sklearn.datasets import load_boston
from sklearn.tree import DecisionTreeRegressor
 
# 加载波士顿房价数据集
boston = load_boston()
X = boston.data
y = boston.target
 
# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```

 

3.2 训练决策树回归器

 

创建一个决策树回归器并进行训练。

```python
# 创建决策树回归器
reg = DecisionTreeRegressor()
 
# 训练模型
reg.fit(X_train, y_train)
```

 

3.3 模型评估

 

使用测试数据评估模型性能。

 

```python
# 预测测试集
y_pred = reg.predict(X_test)
 
# 计算均方误差
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse:.2f}')
```

 

4. 代码总结

 

综上所述,我们介绍了如何在Python中使用Scikit-learn库实现决策树分类器和回归器。通过简单的步骤,我们可以训练和评估模型,并对决策树进行可视化。以下是完整代码的汇总:

```python
from sklearn.datasets import load_iris, load_boston
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
from sklearn import tree
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
 
# 分类示例
iris = load_iris()
X_class, y_class = iris.data, iris.target
X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_class, y_class, test_size=0.3, random_state=42)
 
clf = DecisionTreeClassifier()
clf.fit(X_train_class, y_train_class)
y_pred_class = clf.predict(X_test_class)
accuracy = sum(y_pred_class == y_test_class) / len(y_test_class)
print(f'Classification Accuracy: {accuracy:.2f}')
 
plt.figure(figsize=(20,10))
tree.plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()
 
# 回归示例
boston = load_boston()
X_reg, y_reg = boston.data, boston.target
X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.3, random_state=42)
 
reg = DecisionTreeRegressor()
reg.fit(X_train_reg, y_train_reg)
y_pred_reg = reg.predict(X_test_reg)
mse = mean_squared_error(y_test_reg, y_pred_reg)
print(f'Regression Mean Squared Error: {mse:.2f}')
```

 

通过上述代码和示例,读者可以深入了解决策树算法的应用及其在分类和回归任务中的实现方法。

相关文章
|
1月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
1月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
113 5
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
177 26
|
1月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
147 4
|
2月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
308 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
424 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
179 0
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
212 0
|
1月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
186 0
|
1月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
140 2

推荐镜像

更多