Python如何实现混淆矩阵?在本教程中,你将看到 Python 中混淆矩阵的完整示例。
Python混淆矩阵教程包含的内容如下:
- 使用pandas创建混淆矩阵
- 使用seaborn显示混淆矩阵
- 通过pandas_ml获取额外的统计数据
- 处理非数字数据
y_Current | y_Predicted |
1 | 1 |
0 | 1 |
0 | 0 |
1 | 1 |
0 | 0 |
1 | 1 |
0 | 1 |
0 | 0 |
1 | 1 |
0 | 0 |
1 | 0 |
0 | 0 |
import pandas as pddata = https://www.lsbin.com/{'y_Actual':[
1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0],
'y_Predicted': [
1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0]
}df = pd.DataFrame(data, columns=[
'y_Actual','y_Predicted'])
print (df)
这是运行代码后数据的样子:
文章图片
Python如何实现混淆矩阵?要使用pandas创建混淆矩阵,你需要按如下方式应用 pd.crosstab:
confusion_matrix = pd.crosstab(df[
'y_Actual'], df[
'y_Predicted'], rownames=[
'Actual'], colnames=[
'Predicted'])
print (confusion_matrix)
这是创建混淆矩阵的完整Python混淆矩阵代码示例:
import pandas as pddata = https://www.lsbin.com/{'y_Actual':[
1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0],
'y_Predicted': [
1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0]
}df = pd.DataFrame(data, columns=[
'y_Actual','y_Predicted'])confusion_matrix = pd.crosstab(df[
'y_Actual'], df[
'y_Predicted'], rownames=[
'Actual'], colnames=[
'Predicted'])
print (confusion_matrix)
运行代码,你会得到以下矩阵:
文章图片
Python混淆矩阵教程 - 使用 seaborn显示混淆矩阵你在上一节中刚刚创建的矩阵相当基本。
Python混淆矩阵示例:你可以使用Python 中的seaborn包来更生动地显示矩阵。要完成此任务,你需要将以下两个组件添加到代码中:
- 将 seaborn 导入为 sn
- sn.heatmap(confusion_matrix, annot=True)
- 导入 matplotlib.pyplot 作为 plt
- plt.show()
import pandas as pd
import seaborn as sn
import matplotlib.pyplot as pltdata = https://www.lsbin.com/{'y_Actual':[
1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0],
'y_Predicted': [
1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0]
}df = pd.DataFrame(data, columns=[
'y_Actual','y_Predicted'])
confusion_matrix = pd.crosstab(df[
'y_Actual'], df[
'y_Predicted'], rownames=[
'Actual'], colnames=[
'Predicted'])sn.heatmap(confusion_matrix, annot=True)
plt.show()
这是你将获得的显示:
文章图片
好多了!
或者,你还可以通过设置margins = True在混淆矩阵的边缘添加总数。
所以你的 Python 代码看起来像这样:
import pandas as pd
import seaborn as sn
import matplotlib.pyplot as pltdata = https://www.lsbin.com/{'y_Actual':[
1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0],
'y_Predicted': [
1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0]
}df = pd.DataFrame(data, columns=[
'y_Actual','y_Predicted'])
confusion_matrix = pd.crosstab(df[
'y_Actual'], df[
'y_Predicted'], rownames=[
'Actual'], colnames=[
'Predicted'], margins = True)sn.heatmap(confusion_matrix, annot=True)
plt.show()
运行代码,你将获得以下带有总数的混淆矩阵:
文章图片
Python混淆矩阵示例:使用 pandas_ml 获取额外的统计信息你可以使用 Python 中的 pandas_ml 包打印其他统计信息(例如 Accuracy)。你可以使用PIP安装 pandas_ml 包:
pip install pandas_ml
然后,你需要将以下语法添加到代码中:
Confusion_Matrix = ConfusionMatrix(df[
'y_Actual'], df[
'y_Predicted'])
Confusion_Matrix.print_stats()
以下是可用于获取其他统计信息的完整Python混淆矩阵代码示例:
import pandas as pd
from pandas_ml import ConfusionMatrixdata = https://www.lsbin.com/{'y_Actual':[
1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0],
'y_Predicted': [
1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0]
}df = pd.DataFrame(data, columns=[
'y_Actual','y_Predicted'])
Confusion_Matrix = ConfusionMatrix(df[
'y_Actual'], df[
'y_Predicted'])
Confusion_Matrix.print_stats()
运行代码,你会看到下面的测量结果(注意,如果你在运行代码时遇到错误,你可以考虑更改 pandas 的版本。例如,你可以将 pandas 的版本更改为 0.23。 4 使用此命令:pip install pandas==0.23.4):
文章图片
对于我们的例子:
- TP = True Positives = 4
- TN = True Negatives = 5
- FP = False Positives = 2
- FN = False Negatives = 1
文章图片
对于一个人口12,精度:
【矩阵处理教程(Python混淆矩阵示例和代码)】准确率 = (TP+TN)/人口= (4+5)/12 = 0.75
Python如何实现混淆矩阵?处理非数字数据到目前为止,你已经了解了如何使用数字数据创建混淆矩阵。但是如果你的数据是非数字的呢?
例如,如果你的数据包含非数字值,例如“是”和“否”(而不是“1”和“0”),该怎么办?
在这种情况下:
- YES = 1
- NO = 0
y_Actual | y_Predicted |
Yes | Yes |
No | Yes |
No | No |
Yes | Yes |
No | No |
Yes | Yes |
No | Yes |
No | No |
Yes | Yes |
No | No |
Yes | No |
No | No |
Python混淆矩阵示例:具体来说,你需要将以下部分添加到代码中:
df [
'y_Current'] = df [
'y_Current'].map ({'Yes': 1, 'No': 0})
df[
'y_Predicted'] = df[
'y_Predicted'].map({'Yes': 1, 'No': 0})
这就是完整的Python混淆矩阵代码示例的样子:
import pandas as pd
from pandas_ml import ConfusionMatrixdata = https://www.lsbin.com/{'y_Actual':[
'Yes', 'No','No', 'Yes', 'No', 'Yes', 'No','No', 'Yes', 'No', 'Yes', 'No'],
'y_Predicted': [
'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'No', 'No','No']
}df = pd.DataFrame(data, columns=[
'y_Actual','y_Predicted'])
df[
'y_Actual'] = df[
'y_Actual'].map({'Yes': 1, 'No': 0})
df[
'y_Predicted'] = df[
'y_Predicted'].map({'Yes': 1, 'No': 0})Confusion_Matrix = ConfusionMatrix(df[
'y_Actual'], df[
'y_Predicted'])
Confusion_Matrix.print_stats()
然后你会得到相同的统计数据:
文章图片
以上就是Python混淆矩阵教程的全部内容,希望这些例子可以帮助到你,谢谢阅读。
推荐阅读
- 无监督学习教程(Python K-Means聚类示例和代码)
- 回归技术教程(Python多元线性回归示例和代码)
- Python网页抓取教程和代码示例
- Kivy教程(如何使用Python Kivy构建GUI应用程序())
- PyQt5教程(Python GUI编程示例和用法)
- Linux杀死进程的10多个用法示例详解
- NLP教程(Python NLTK用法示例和完整指南)
- expect命令用法示例(如何自动化shell脚本())
- 如何编写实用的shell脚本(bash编程教程)