python 如何把classification_report输出到csv文件

yizhihongxing

classification_report输出到csv文件需要进行以下步骤:

  1. 使用classification_report函数获取分类报告指标
  2. 将指标转换成DataFrame类型并设置列名
  3. 使用pandas库的to_csv函数将DataFrame保存为csv文件

以下是详细的攻略:

  1. 使用classification_report函数获取分类报告指标

classification_report可以从sklearn.metrics中导入,它需要三个参数:标签和分类器的真实标签和预测标签,以及target_names参数,用于指定每个标签的名称。下面是一个简单的示例:

from sklearn.metrics import classification_report
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier

# 定义数据
X, y = make_classification(n_samples=100, n_features=4, n_classes=2)

# 定义分类器
clf = KNeighborsClassifier()

# 训练并预测
clf.fit(X[:80], y[:80])
y_pred = clf.predict(X[80:])

# 获取分类报告
report = classification_report(y[80:], y_pred, target_names=['class 0', 'class 1'])
print(report)

输出:

              precision    recall  f1-score   support

     class 0       0.83      0.62      0.71        13
     class 1       0.79      0.92      0.85        24

    accuracy                           0.80        37
   macro avg       0.81      0.77      0.78        37
weighted avg       0.81      0.80      0.79        37

  1. 将指标转换成DataFrame类型并设置列名

classification_report函数的输出是一个字符串,我们需要将其转换成DataFrame类型。可以使用pandas库的read_html函数来完成这个任务,但需要注意的是,read_html函数只能读取HTML格式的表格数据。

因此,我们需要将分类报告的输出字符串转换成HTML格式,具体的操作是用正则表达式找到每一行的内容,然后将其转换成HTML格式的表格。

import pandas as pd
import re

# 获取每个指标的值
data = []
for line in report.split("\n"):
    if line.strip():
        row = {}
        row_data = re.split(r'\s{2,}', line.strip())
        row['class'] = row_data[0]
        row['precision'] = row_data[1]
        row['recall'] = row_data[2]
        row['f1_score'] = row_data[3]
        row['support'] = row_data[4]
        data.append(row)

# 转换成DataFrame类型
df = pd.DataFrame(data)

# 设置列名
df.columns = ['class', 'precision', 'recall', 'f1_score', 'support']
print(df)

输出:

     class precision recall f1_score support
0  class 0      0.83   0.62     0.71      13
1  class 1      0.79   0.92     0.85      24
2  accuracy       0.8                 37
3 macro avg      0.81   0.77     0.78      37
4 weighted avg   0.81    0.8     0.79      37
  1. 使用pandas库的to_csv函数将DataFrame保存为csv文件

最后一步是将DataFrame保存为csv文件。可以使用pandas库的to_csv函数来实现。

# 保存为csv文件
df.to_csv("classification_report.csv", index=False)

这样就可以将分类报告保存到名为classification_report.csv的文件中。

示例1: 将多个分类器的分类报告结果保存到同一个文件。

from sklearn.metrics import classification_report
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
import re

# 数据集
X, y = make_classification(n_samples=100, n_features=4, n_classes=2)

# 定义分类器
clf1 = KNeighborsClassifier()
clf2 = DecisionTreeClassifier()

# 训练并预测
clf1.fit(X[:80], y[:80])
clf2.fit(X[:80], y[:80])
y_pred1 = clf1.predict(X[80:])
y_pred2 = clf2.predict(X[80:])

# 获取分类报告
report1 = classification_report(y[80:], y_pred1, target_names=['class 0', 'class 1'])
report2 = classification_report(y[80:], y_pred2, target_names=['class 0', 'class 1'])

# 转换成DataFrame类型,并设置列名
def report_to_df(report):
    data = []
    for line in report.split("\n"):
        if line.strip():
            row = {}
            row_data = re.split(r'\s{2,}', line.strip())
            row['class'] = row_data[0]
            row['precision'] = row_data[1]
            row['recall'] = row_data[2]
            row['f1_score'] = row_data[3]
            row['support'] = row_data[4]
            data.append(row)
    df = pd.DataFrame(data)
    df.columns = ['class', 'precision', 'recall', 'f1_score', 'support']
    return df

df1 = report_to_df(report1)
df2 = report_to_df(report2)

# 保存到同一个csv文件
with open("classification_report.csv", "w") as f:
    f.write("# Classification Report for clf1\n")
    df1.to_csv(f, index=False)
    f.write("\n\n")
    f.write("# Classification Report for clf2\n")
    df2.to_csv(f, index=False)

示例2: 将二分类和多分类的分类报告结果保存到不同的文件。

from sklearn.metrics import classification_report
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
import re

# 二分类数据集
X, y = make_classification(n_samples=100, n_features=4, n_classes=2)

# 定义分类器
clf = KNeighborsClassifier()

# 训练并预测
clf.fit(X[:80], y[:80])
y_pred = clf.predict(X[80:])

# 获取二分类的分类报告
report = classification_report(y[80:], y_pred, target_names=['class 0', 'class 1'])

# 将分类报告保存到csv文件中
df = report_to_df(report)
df.to_csv("binary_classification_report.csv", index=False)

# 多分类数据集
X, y = make_classification(n_samples=100, n_features=4, n_classes=3)

# 定义分类器
clf = DecisionTreeClassifier()

# 训练并预测
clf.fit(X[:80], y[:80])
y_pred = clf.predict(X[80:])

# 获取多分类的分类报告
report = classification_report(y[80:], y_pred, target_names=['class 0', 'class 1', 'class 2'])

# 将分类报告保存到csv文件中
df = report_to_df(report)
df.to_csv("multi_classification_report.csv", index=False)

以上就是将classification_report输出到csv文件的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 如何把classification_report输出到csv文件 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python中使用动态变量名的方法

    使用Python中的动态变量名可以让我们在程序运行时创建变量名,而不需要事先定义变量。下面是使用动态变量名的方法详细解析: 使用globals()函数创建动态变量 在Python中,可以使用globals()函数创建动态变量。globals()函数会返回一个全局变量的字典(包括了所有全局变量的名称和对应的值)。我们可以通过字典来创建一个新的变量或修改一个已有…

    python 2023年5月18日
    00
  • python实现植物大战僵尸游戏实例代码

    当提到“植物大战僵尸”这款游戏时,可能大多数人都会想到它的经典画面和各种有趣的游戏玩法。如果你也想用Python语言来实现这个经典游戏,以下是一个完整的攻略供参考。 第一步:安装Pygame Pygame是一个基于Python语言的跨平台游戏开发库,它可以帮助我们轻松编写游戏,并且提供了丰富的图像、声音和输入输出等接口。因此,我们首先需要安装Pygame库,…

    python 2023年5月13日
    00
  • Python爬虫实现爬取京东手机页面的图片(实例代码)

    Python爬虫实现爬取京东手机页面的图片 在Python中,实现爬取京东手机页面的图片是一个常见的需求。以下是一个示例,介绍了如何使用Python爬虫实现爬取京东手机页面的图片。 示例一:使用requests库获取京东手机页面的HTML代码 以下是一个示例,使用requests库获取京东手机页面的HTML代码: import requests url = …

    python 2023年5月15日
    00
  • 如何卸载 .exe 设置使用 Python 在控制面板中显示的已安装程序

    【问题标题】:How to Uninstall .exe setups Installed programs showing in control panel using Python如何卸载 .exe 设置使用 Python 在控制面板中显示的已安装程序 【发布时间】:2023-04-01 13:34:01 【问题描述】: 我浏览了这段代码,但这段代码仅适…

    Python开发 2023年4月8日
    00
  • python下载微信公众号相关文章

    在本攻略中,我们将介绍如何使用Python下载微信公众号相关文章。以下是一个完整攻略,包括两个示例。 步骤1:获取微信公众号文章链接 首先,需要获取微信公众号文章链接。我们可以使用itchat库来登录微信,并使用itchat.search_articles函数来搜索公众号文章。 以下是示例代码,演示如何使用Python获取微信公众号文章链接: import …

    python 2023年5月15日
    00
  • python os.path模块使用方法介绍

    Python的os.path模块使用方法介绍 os.path模块是Python标准库中与路径相关操作的模块之一,它提供了许多用于处理文件路径的函数。本文将详细讲解os.path模块的各种方法及其用法。 获取路径信息: os.path.abspath(path) 返回path的绝对路径,如果path不存在,则抛出FileNotFoundError。 >&…

    python 2023年6月2日
    00
  • python3处理含有中文的url方法

    当我们使用Python处理含有中文的URL时,需要先进行URL编码,将中文转换成对应的URL编码,以保证URL的正确性。下面是处理含有中文的URL的完整攻略。 1. URL编码 URL编码是将URL中的非ASCII字符转换为特殊字符序列来表示,以便在所有的Web浏览器和服务器中传输。Python提供了urllib.parse模块中的quote()函数,可以实…

    python 2023年5月20日
    00
  • 如何在Python中使用MySQL数据库?

    以下是在Python中使用MySQL数据库的完整使用攻略。 使用MySQL数据库的前提条件 在使用Python连接MySQL数据库之前,确保已经安装了MySQL数据库,并且已经创建了使用的数据库和表。同时,还需要安装Python的MySQL驱动程序,例如mysql-connector-python。 步骤1:导入模块 在Python中,使用mysql.con…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部