二分类问题的micro-F1 score(f值)和Accuracy(准确度)

直接上结论: 二分类的micro-F1 score和Accuracy的值相等


时隔一年多看到了完整细致的文章,同样说明了micro-F1和accuracy和recall和precision相等,同时还解释了macro-F1的两种计算方法,sklearn和各种工具在计算f的差别,好文!
传送门
Update Version :2022.10.26


关于 F score 和micro-F score以及macro-F score可以参考:参考文

对于二分类问题(A类和B类),某分类器判断结果为

判断为A类判断为B类
实际为A类ab
实际为B类cd

为了计算 micro-F1 score,计算整体的TP,FP,FN。
对于A类来说 TPA = a ,对于B类来说 TPB = d ,
同理可得 FPA= c ,FPB = b,
以及FNA= b ,FNB = c。
故整体而言 TP = a + d, FP = FN = b + c。
故:
P r e c i s i o n = a + d n = R e c a l l = A c c u r a c y Precision=\frac{a+d}{n}=Recall=Accuracy Precision=na+d=Recall=Accuracy
F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l = P r e c i s o n = A c c u r a c y F_1=2\times\frac{Precision\times Recall}{Precision+Recall}=Precison=Accuracy F1=2×Precision+RecallPrecision×Recall=Precison=Accuracy

Original Version :2021.01.11

在Python中,我们可以使用sklearn库来实现K近邻(KNN)模型,以及处理红酒数据集的数据划分、模型选择性能评估。这里是一个简单的示例: 首先,确保安装了必要的库: ```bash pip install numpy pandas scikit-learn matplotlib ``` 然后,你可以按照以下步骤操作: 1. 导入所需的库模块: ```python import numpy as np import pandas as pd from sklearn import datasets from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score, confusion_matrix ``` 2. 加载红酒数据集(假设已经下载好并保存为`wine.csv`): ```python data = pd.read_csv('wine.csv') X = data.drop('class', axis=1) y = data['class'] ``` 3. 数据预处理:标准化数据(如果需要,因为KNN不处理非线性特征): ```python scaler = StandardScaler() X_scaled = scaler.fit_transform(X) ``` 4. 划分训练集测试集(例如,70%用于训练,30%用于测试): ```python X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42) ``` 5. 使用GridSearchCV寻找最佳的K(在这里,我们假定K范围从1到30): ```python param_grid = {'n_neighbors': list(range(1, 31))} knn_model = KNeighborsClassifier() grid_search = GridSearchCV(knn_model, param_grid, cv=5, scoring='accuracy') # 交叉验证次数设为5 grid_search.fit(X_train, y_train) best_k = grid_search.best_params_['n_neighbors'] print(f"Best K value: {best_k}") ``` 6. 训练模型: ```python knn_model = KNeighborsClassifier(n_neighbors=best_k) knn_model.fit(X_train, y_train) ``` 7. 预测评估: ```python y_pred = knn_model.predict(X_test) # 计算指标 accuracy = accuracy_score(y_test, y_pred) f1 = f1_score(y_test, y_pred, average='weighted') # 可选:'micro', 'macro', 'weighted' precision = precision_score(y_test, y_pred, average='weighted') recall = recall_score(y_test, y_pred, average='weighted') print(f"Accuracy: {accuracy:.2f}") print(f"F1 Score: {f1:.2f}") print(f"Precision: {precision:.2f}") print(f"Recall: {recall:.2f}") # 可视化混淆矩阵(仅当数据量较小时可用) conf_mat = confusion_matrix(y_test, y_pred) ``` 完成以上步骤后,你就可以得到红酒数据集上KNN模型的性能评估结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值