利用决策树算法对鸢尾花数据进行建模分类,可视化算法的过程与结合指标,代码展示加解释
时间: 2024-09-24 21:05:50 浏览: 43
利用决策树对鸢尾花数据进行分类是一个常见的机器学习实践,特别是在数据可视化和理解方面。决策树是一种监督学习算法,它通过一系列规则(即特征和阈值)将数据分割成不同的类别。
首先,我们需要导入所需的库,如`sklearn`, `pandas`, `matplotlib`以及`seaborn`来进行数据处理、模型构建和可视化:
```python
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, classification_report
import matplotlib.pyplot as plt
import seaborn as sns
# 加载鸢尾花数据集
iris = load_iris()
df = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target'])
# 准备训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,:4], df['target'], test_size=0.2, random_state=42)
# 创建决策树分类器
tree_model = DecisionTreeClassifier()
# 训练模型
tree_model.fit(X_train, y_train)
# 预测并评估
y_pred = tree_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 可视化决策树
plt.figure(figsize=(15,10))
sns.set(style="white", font_scale=1.2)
tree.plot_tree(tree_model, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()
# 分类报告
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
# 结合指标的可视化
confusion_matrix = confusion_matrix(y_test, y_pred)
sns.heatmap(confusion_matrix / np.sum(confusion_matrix), annot=True, cmap='coolwarm')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
```
在这个例子中,我们首先加载了鸢尾花数据,然后划分训练集和测试集。接着创建了一个`DecisionTreeClassifier`实例,并用训练数据对其进行训练。预测之后,我们计算了模型的准确率,打印了分类报告,展示了决策树结构,并最后生成了混淆矩阵的热力图,以便更好地了解分类性能。
阅读全文