.自己找一个合适的数据集,使用决策树算法解决分类和回归问题,把解决思路和代码写在下面,可以使用原生python代码或sklearn等机器学习框架。
时间: 2024-10-09 12:04:39 浏览: 52
西瓜书《机器学习》---第四章 决策树python代码实现
5星 · 资源好评率100%
首先,我们选择一个数据集,这里以经典的鸢尾花(Iris)数据集为例,它是一个适合初学者的小型分类任务数据集,包含了三种花卉(Setosa、Versicolour、Virginica)的不同特征。对于回归问题,我们可以选取波士顿房价数据集(Boston Housing Dataset),它包含506个观测值,每个观测值有13个属性。
### 解决思路:
1. **数据预处理**:
- 导入必要的库:`pandas`, `numpy`, `scikit-learn`等。
- 加载数据集:`iris` for 分类任务,`boston` for 回归任务。
- 数据清洗、缺失值处理以及特征缩放。
2. **数据划分**:
- 划分训练集和测试集,通常80%用于训练,20%用于验证模型性能。
3. **构建决策树模型**:
- 对于分类任务,使用`sklearn.tree.DecisionTreeClassifier`。
- 对于回归任务,使用`sklearn.tree.DecisionTreeRegressor`。
4. **训练模型**:
- 使用训练数据拟合模型。
5. **评估模型**:
- 对测试集进行预测,并计算准确率(分类任务)或均方误差(MSE)(回归任务)。
6. **可视化决策树**:
- 可选步骤,对分类任务的决策树进行可视化以便理解其决策过程。
### 示例代码(Python + scikit-learn):
```python
# 导入所需库
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris, load_boston
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
from sklearn.metrics import accuracy_score, mean_squared_error
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.2, random_state=42)
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("分类任务准确率:", accuracy)
# 如果想要可视化决策树,可以使用:
# from sklearn.tree import export_graphviz
# export_graphviz(clf, out_file="tree.dot", feature_names=iris.feature_names, class_names=iris.target_names)
# 回归任务(波士顿房价)
boston = load_boston()
X_boston = boston.data
y_boston = boston.target
X_train_boston, X_test_boston, y_train_boston, y_test_boston = train_test_split(X_boston, y_boston, test_size=0.2, random_state=42)
regressor = DecisionTreeRegressor()
regressor.fit(X_train_boston, y_train_boston)
y_pred_boston = regressor.predict(X_test_boston)
mse = mean_squared_error(y_test_boston, y_pred_boston)
print("回归任务MSE:", mse)
# 结果分析...
```
阅读全文