在使用不同的K值训练鸢尾花分类模型时,常用的统计指标有准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1值。下面是一个包含代码示例的解决方法。
首先,我们需要导入所需的库和数据集:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
iris = load_iris()
X = iris.data
y = iris.target
然后,我们可以使用不同的K值训练多个模型,并计算各种统计指标:
k_values = [3, 5, 7]
for k in k_values:
# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练KNN模型
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'K={k}, 准确率:{accuracy}')
# 计算精确率
precision = precision_score(y_test, y_pred, average='weighted')
print(f'K={k}, 精确率:{precision}')
# 计算召回率
recall = recall_score(y_test, y_pred, average='weighted')
print(f'K={k}, 召回率:{recall}')
# 计算F1值
f1 = f1_score(y_test, y_pred, average='weighted')
print(f'K={k}, F1值:{f1}')
在上面的示例中,我们使用了KNeighborsClassifier作为分类器,并通过train_test_split函数将数据集拆分为训练集和测试集。然后,我们训练了多个KNN模型,并使用测试集进行预测。最后,我们使用accuracy_score、precision_score、recall_score和f1_score函数计算了各种统计指标。
请注意,代码示例中的average参数设置为'weighted',这意味着通过对每个类别的指标进行加权平均来计算最终的统计指标。这是因为鸢尾花数据集是一个多类别分类问题,我们希望对每个类别的预测结果给予适当的权重。如果你的数据集是二分类问题,可以将average参数设置为'binary'。
下一篇:不同来源的多个模态按钮