117 lines
4.0 KiB
Markdown
117 lines
4.0 KiB
Markdown
# Python 中的计算精度——分类误差度量
|
||
|
||
> 原文:<https://www.askpython.com/python/examples/calculating-precision>
|
||
|
||
读者朋友们,你们好!在本文中,我们将详细关注 Python 中的**计算精度。**
|
||
|
||
所以,让我们开始吧!!🙂
|
||
|
||
* * *
|
||
|
||
* * *
|
||
|
||
## 精确度——分类误差指标
|
||
|
||
在深入研究分类错误度量的概念具体来说,精度之前,让我们先了解一下机器学习中的错误度量是什么。
|
||
|
||
误差指标是一组指标,使我们能够评估模型在准确性方面的效率,并让我们估计最适合我们的问题陈述的模型。
|
||
|
||
根据机器学习算法的类型,有各种类型的误差度量。
|
||
|
||
对于回归算法,我们有以下可用于评估的指标-
|
||
|
||
1. **[R 方](https://www.askpython.com/python/coefficient-of-determination)**
|
||
2. **[MAPE](https://www.askpython.com/python/examples/mape-mean-absolute-percentage-error)**
|
||
3. **MSE**
|
||
4. **调整后的 R 方**等。
|
||
|
||
对于分类算法,我们可以利用以下指标-
|
||
|
||
* **[混乱矩阵](https://www.askpython.com/python/examples/confusion-matrix)**
|
||
* **精度**
|
||
* **精度**
|
||
* **回忆**等。
|
||
|
||
精度帮助我们估计被预测为正的和实际上为正的正数据值的百分比。
|
||
|
||
**精度公式:**
|
||
|
||
精度=真阳性/(真阳性+假阳性)
|
||
|
||
**注—**所谓真正值,是指预测为正值且实际为正值的值。而假正值是预测为正值但实际上为负值的值。
|
||
|
||
精度分值的范围分别为 0.0 到 1.0。
|
||
|
||
现在,让我们关注 Python 中数据集的精度误差度量的实现。
|
||
|
||
* * *
|
||
|
||
## Python 中计算数据集精度的步骤
|
||
|
||
首先,我们将利用银行贷款数据集进行演示。
|
||
|
||
你可以在这里找到数据集 **[!](https://github.com/Safa1615/Bike-loan-Dataset/blob/main/bank-loan.csv)**
|
||
|
||
1. 最初,我们使用 read_csv()函数将数据集加载到 Python 环境中。
|
||
2. 使用[缺失值分析](https://www.askpython.com/python/examples/impute-missing-data-values)、[异常值检测](https://www.askpython.com/python/examples/detection-removal-outliers-in-python)技术进行数据分析和清理。
|
||
3. 使用 train_test_split()函数将数据集拆分为训练数据和测试数据。
|
||
4. 在应用模型之前,我们需要定义用于评估模型的误差度量。我们利用混淆矩阵来获得真阳性和假阳性分数。此外,我们已经应用了上面讨论的公式来获得精度分数。
|
||
5. 最后,我们在数据集上应用决策树算法,并用精度分数测试其效率。
|
||
|
||
你可以在下面找到完整的代码
|
||
|
||
```py
|
||
import pandas as pd
|
||
import numpy as np
|
||
loan = pd.read_csv("bank-loan.csv") # dataset
|
||
|
||
from sklearn.model_selection import train_test_split
|
||
X = loan.drop(['default'],axis=1)
|
||
Y = loan['default'].astype(str)
|
||
|
||
# Error metrics -- Confusion matrix\FPR\FNR\f1 score\
|
||
def err_metric(CM):
|
||
|
||
TN = CM.iloc[0,0]
|
||
FN = CM.iloc[1,0]
|
||
TP = CM.iloc[1,1]
|
||
FP = CM.iloc[0,1]
|
||
precision =(TP)/(TP+FP)
|
||
accuracy_model =(TP+TN)/(TP+TN+FP+FN)
|
||
recall_score =(TP)/(TP+FN)
|
||
specificity_value =(TN)/(TN + FP)
|
||
|
||
False_positive_rate =(FP)/(FP+TN)
|
||
False_negative_rate =(FN)/(FN+TP)
|
||
f1_score =2*(( precision * recall_score)/( precision + recall_score))
|
||
print("Precision value of the model: ",precision)
|
||
print("Accuracy of the model: ",accuracy_model)
|
||
|
||
#Decision Trees
|
||
decision = DecisionTreeClassifier(max_depth= 6,class_weight='balanced' ,random_state =0).fit(X_train,Y_train)
|
||
target = decision.predict(X_test)
|
||
targetclass_prob = decision.predict_proba(X_test)[:, 1]
|
||
confusion_matrix = pd.crosstab(Y_test,target)
|
||
err_metric(confusion_matrix)
|
||
|
||
```
|
||
|
||
**输出—**
|
||
|
||
因此,精度分数为 0.25,这意味着总预测正值的 25%实际上是正的。
|
||
|
||
```py
|
||
Precision value of the model: 0.25
|
||
Accuracy of the model: 0.6028368794326241
|
||
|
||
```
|
||
|
||
* * *
|
||
|
||
## 结论
|
||
|
||
到此,我们就结束了这个话题。如果你遇到任何问题,欢迎在下面评论。
|
||
|
||
更多与 Python 编程相关的帖子,请继续关注我们。
|
||
|
||
在那之前,学习愉快!!🙂 |