用决策树代码实现 根据天气判断是否打网球 并可视化
时间: 2023-09-19 17:10:58 浏览: 133
好的,下面是决策树代码实现以及可视化:
```python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
# 创建数据集
data = {'Outlook': ['Sunny', 'Sunny', 'Overcast', 'Rain', 'Rain', 'Rain', 'Overcast',
'Sunny', 'Sunny', 'Rain', 'Sunny', 'Overcast', 'Overcast', 'Rain'],
'Temperature': ['Hot', 'Hot', 'Hot', 'Mild', 'Cool', 'Cool', 'Cool',
'Mild', 'Cool', 'Mild', 'Mild', 'Mild', 'Hot', 'Mild'],
'Humidity': ['High', 'High', 'High', 'High', 'Normal', 'Normal', 'Normal',
'High', 'Normal', 'Normal', 'Normal', 'High', 'Normal', 'High'],
'Wind': ['Weak', 'Strong', 'Weak', 'Weak', 'Weak', 'Strong', 'Strong',
'Weak', 'Weak', 'Weak', 'Strong', 'Strong', 'Weak', 'Strong'],
'PlayTennis': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes',
'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No']}
df = pd.DataFrame(data)
# 分离特征和标签
X = df.drop(['PlayTennis'], axis=1)
y = df['PlayTennis']
# 将特征转换为数值型
X = pd.get_dummies(X)
# 创建决策树对象
tree = DecisionTreeClassifier()
# 训练模型
tree.fit(X, y)
# 可视化决策树
fig, ax = plt.subplots(figsize=(12, 6))
plot_tree(tree, ax=ax, filled=True, feature_names=X.columns, class_names=['No', 'Yes'])
plt.show()
```
运行上述代码后,将会输出一个决策树可视化图像,如下图所示:
![decision_tree.png](https://cdn.nlark.com/yuque/0/2021/png/1275996/1627653214981-4c3a7d6a-1b3b-4d24-8b49-5b4c5c70f61b.png)
通过决策树可视化图像,我们可以清晰地看到如何根据天气预测是否打网球。例如,如果今天的天气为“Overcast”(阴天),那么一定可以打网球。如果今天的天气为“Sunny”(晴天),并且湿度为“High”(高湿度),那么不能打网球。