Python中的决策树算法探索

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 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}')
```

 

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

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
5天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
5天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
9天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
26 2
|
10天前
|
算法
树的遍历算法有哪些?
不同的遍历算法适用于不同的应用场景。深度优先搜索常用于搜索、路径查找等问题;广度优先搜索则在图的最短路径、层次相关的问题中较为常用;而二叉搜索树的遍历在数据排序、查找等方面有重要应用。
19 2
|
18天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
19 3
|
21天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
26天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
14天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
机器学习/深度学习 算法 Python
【Python数据科学手册】专题:决策树与随机森林
本文将介绍一种强大的算法——无参数算法随机森林。随机森林是一种集成方法,通过集成多个比较简单的评估器形成累积效果。这种集成方法的学习效果经常出人意料,往往能超过各个组成部分的总和;也就是说,若干评估器的多数投票(majority vote)的最终效果往往优于单个评估器投票的效果!
838 0