请根据鸢尾花数据,编写Python代码完成下列操作: (1)使用sklearn库加载鸢尾花数据和数据标签,将鸢尾花数据储存至数据框data,数据标签储存至数据框label。 (2)统计数据中鸢尾花的类别数,并输出其结果。 (3)以花萼长度为x轴,花萼宽度为y轴,绘制并展示散点图。 (4)将加载好的鸢尾花数据集划分成训练集和测试集两部分,训练集和测试集样本数比例为8:2,并将训练集数据、测试集数据、训练集标签和测试集标签分别储存至数据框x_train,数据框x_test,数据框y_train和数据框y_test。 (5)对数据框x_train和数据框x_test进行离差标准化,将标准化后的训练集和测试集数据分别储存至数据框scaler_x_train和数据框scaler_x_test。(注意:测试集数据需使用和训练集数据相同的规则进行标准化。) (6)构建决策树分类模型,命名为model,并进行模型训练。 (7)对构建的模型进行性能评估,并输出其结果。(性能评估包括计算精确率、召回率和F1值等分类评估指标。)
时间: 2024-03-17 20:45:21 浏览: 84
以下是完整的Python代码,按照要求实现了对鸢尾花数据集的加载、数据处理、模型构建和性能评估等步骤:
```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.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 加载鸢尾花数据集
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
label = pd.DataFrame(iris.target, columns=['label'])
# 统计数据中鸢尾花的类别数
print('鸢尾花的类别数为:', len(label['label'].unique()))
# 绘制散点图
import matplotlib.pyplot as plt
plt.scatter(data['sepal length (cm)'], data['sepal width (cm)'])
plt.xlabel('sepal length (cm)')
plt.ylabel('sepal width (cm)')
plt.show()
# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.2, random_state=42)
# 离差标准化
scaler = StandardScaler()
scaler_x_train = pd.DataFrame(scaler.fit_transform(x_train), columns=x_train.columns)
scaler_x_test = pd.DataFrame(scaler.transform(x_test), columns=x_test.columns)
# 构建决策树分类模型
model = DecisionTreeClassifier(random_state=42)
model.fit(scaler_x_train, y_train)
# 性能评估
y_pred = model.predict(scaler_x_test)
print('准确率为:', accuracy_score(y_test, y_pred))
print('精确率为:', precision_score(y_test, y_pred, average='macro'))
print('召回率为:', recall_score(y_test, y_pred, average='macro'))
print('F1值为:', f1_score(y_test, y_pred, average='macro'))
```
希望这个代码对你有帮助!
阅读全文