You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KNeighborsClassifier中输出测试数据的weighted f1-score?

如何在KNeighborsClassifier中计算测试数据的加权F1分数

别担心,操作其实非常直接,核心就是先让模型对测试集做出预测,再用f1_score工具传入真实标签和预测结果,指定加权模式就行。我给你整理了完整的实操步骤和代码:

完整代码示例

# 导入需要的库
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score
from sklearn.datasets import load_iris  # 用iris数据集做示例,你可以替换成自己的数据集

# 1. 加载并划分数据
data = load_iris()
X = data.data  # 特征矩阵
y = data.target  # 标签

# 划分训练集和测试集,这里测试集占30%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 2. 初始化并训练KNN模型
knn = KNeighborsClassifier(n_neighbors=3)  # 你可以根据需求调整n_neighbors参数
knn.fit(X_train, y_train)

# 3. 得到测试集的预测结果
y_pred = knn.predict(X_test)

# 4. 计算加权F1分数
weighted_f1 = f1_score(y_test, y_pred, average='weighted')
print(f"KNN模型在测试集上的加权F1分数: {weighted_f1:.4f}")

关键细节解释

  • 核心代码是f1_score(y_test, y_pred, average='weighted'):指定average='weighted'后,计算的F1分数会根据每个类别的样本数量进行加权,特别适合样本不平衡的数据集。
  • 你只需要把示例里的load_iris()替换成你自己的数据集加载代码,保证X_test、y_test是你的测试集特征和真实标签就行。
  • 如果你的任务是二分类,这个参数同样适用,它会根据正负样本的数量加权计算结果。

内容的提问来源于stack exchange,提问作者tim_xyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:09:52