召回率和精准率

毕设做的是地物高光谱遥感图像分类,单一考虑分类器的准确度有时候是不行的,比如在博茨瓦纳数据集中,第一类的样本数占据总样本数的大部分,即出现样本倾斜,分类器的总体分类精度容易受到这种大样本数目类别的影响,即使傻瓜式的全部预测为第一类也是有90%以上的精确度。那就引入基于混淆矩阵的平均分类精度、召回率、准确率。

其中用到召回率 ,其实就是每类的分类准确度,召回率的分母考虑的是原始每类的样本数目。平均分类精度就是召回率的均值。

准确率就是预测的样本数目中预测对的所占的比例,分母考虑的是预测结果。

下面给出两者的计算公式。

有时候我们会重视准确率:

比如在预测股票的时候,如果我们关注的是股票价格上升,我们当然是希望我们预测对的次数占预测总次数的比例越高越好,如果原本很多样本是升我们预测为降,即召回率低,这种情况只是失去赚钱的机会,没有损失钱。

有时候我们会重视召回率:

比如在预测病人得病时,有病是我们关注的,召回率意味着我们把更多的人分类到有病,这其中会增加许多错分,即把无病的错分到有病,那么“患者”会作进一步检查确诊是否真的有病,很多人能够确诊无病;而如果把更多的人分类到无病,也会有很多错分,即一些真的有病的分到无病,这个损失是大的。

其上两种需要横纵两方面考虑。

在评价我们得到的模型的时候当然是希望召回率和准确率都越高越好,不过二者之间有时候会存在tradeoff,举个例子:

一个盒子里面有10瓶奶,其中4瓶纯奶,6瓶酸奶,我喜欢喝纯奶,所以纯奶是我的目标。

  • 一次拿5瓶奶(别管拿不拿得住)有3瓶纯奶,召回率=3/4 ;精确率=3/5
  • (极端)一次拿1瓶奶,有1瓶纯奶,召回率=1/4 ;精确率=1/1
  • (极端)一次拿10瓶奶(别管拿不拿得住)有4瓶纯奶,召回率=4/4 ;精确率=4/10

出现tradeoff那就看能不能平衡,引入F1 score

调和平均值的特点:如果二者极度不平衡,最终F1也特别低,只有二者都非常高结果才会高

 

在Python的scikit-learn库中,可以使用`KNeighborsClassifier`来进行K-Nearest Neighbors)分类。首先,我们需要导入所需的库,加载鸢尾花数据集,然后划分训练集测试集。 ```python 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, recall_score, precision_score, confusion_matrix, plot_confusion_matrix # 加载鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集测试集 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=3) # 可以尝试调整n_neighbors值 knn.fit(X_train, y_train) # 预测测试集 y_pred = knn.predict(X_test) # 计算评估指标 accuracy = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred, average='macro') # 使用'macro'平均适用于多类别任务 precision = precision_score(y_test, y_pred, average='macro') print(f"Accuracy: {accuracy}") print(f"Recall: {recall}") print(f"Precision: {precision}") # 绘制混淆矩阵 plot_confusion_matrix(knn, X_test, y_test, cmap='Blues', display_labels=iris.target_names) ``` 运行以上代码后,你将得到K-近邻模型在测试集上的准确率召回率精准。同时,会显示一个混淆矩阵图形,直观地展示模型预测结果与实际标签之间的对应关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值