如何在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
相关产品推荐
相关产品推荐

