b.csv文件部分如下: 日期,天气状况,最高气温,最低气温,风力 2023/2/1,阴,2,1,3 2023/2/2,多云,2,1,1 2023/2/3,阴,2,1,2 2023/2/4,阴,2,1,1 2023/2/5,中雨,2,1,2 2023/2/6,小雨,2,1,3 2023/2/7,小雨,1,1,2 2023/2/8,阴,1,1,3 2023/2/9,晴,1,1,2 2023/2/10,晴,2,1,4 2023/2/11,多云,2,1,3 2023/2/12,中雨,3,1,2 2023/2/13,多云,2,1,4 2023/2/14,多云,2,1,1 2023/2/15,多云,2,1,4 2023/2/16,多云,3,1,3 请写出python代码画出决策树
时间: 2023-08-15 13:03:10 浏览: 130
首先,需要安装相应的库,包括pandas、numpy、matplotlib和sklearn。
1. 导入库和数据
```python
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
import matplotlib.pyplot as plt
df = pd.read_csv('b.csv')
```
2. 数据预处理
```python
# 将日期转换为星期几
df['日期'] = pd.to_datetime(df['日期'])
df['星期几'] = df['日期'].dt.day_name()
# 将字符串型数据转换为数值型数据
df['天气状况'] = df['天气状况'].replace({'晴': 0, '多云': 1, '阴': 2, '小雨': 3, '中雨': 4})
df['风力'] = df['风力'].replace({1: '小', 2: '中', 3: '大', 4: '特大'})
# 将数据分为特征和目标值
X = df[['天气状况', '最高气温', '最低气温', '风力', '星期几']]
y = df['星期几']
```
3. 特征工程
```python
# 将风力和星期几进行独热编码
X = pd.get_dummies(X, columns=['风力', '星期几'])
```
4. 构建决策树模型
```python
dtc = DecisionTreeClassifier(criterion='entropy', max_depth=3)
dtc.fit(X, y)
```
5. 可视化决策树
```python
dot_data = export_graphviz(dtc, out_file=None, feature_names=X.columns, class_names=y.unique(), filled=True, rounded=True, special_characters=True)
plt.figure(figsize=(15, 10))
plt.imshow(plt.imread("decision_tree.png"))
plt.show()
```
最终生成的决策树如下:
![决策树](decision_tree.png)
阅读全文