Python和C++混淆矩阵地理学医学物理学视觉语言模型和算法模型评估工具

111 篇文章 5 订阅
61 篇文章 0 订阅

🎯要点

  1. 优化损失函数评估指标
  2. 海岸线检测算法评估
  3. 遥感视觉表征和文本增强
  4. 乳腺癌预测模型算法
  5. 液体中闪烁光和切伦科夫光分离
  6. 多标签分类任务性能评估
  7. 有向无环图、多路径标记和非强制叶节点预测二元分类评估
  8. 特征归因可信性评估
  9. 马修斯相关系数对比其他准确度
    在这里插入图片描述

Python桑基图混淆矩阵

桑基图是一种数据可视化技术或流程图,强调从一种状态到另一种状态或从一个时间到另一个时间的流动/移动/变化,其中箭头的宽度与所描绘的广泛属性的流速成正比。桑基图还可以可视化能源账户、区域或国家层面的物质流账户以及成本细目。该图表通常用于物质流分析的可视化。桑基图强调系统内的主要转移或流动。它们有助于确定流动中最重要的贡献。它们通常显示定义的系统边界内的守恒量。

Python桑基图和混淆矩阵

import pandas as pd
import numpy as np
from plotly import graph_objects as go
RED = "rgba(245,173,168,0.6)"
GREEN = "rgba(211,255,216,0.6)"
def create_df_from_confusion_matrix(confusion_matrix, class_labels=None):
    if not len(class_labels):
        df = pd.DataFrame(data=confusion_matrix, 
                          index=[f"True Class-{i+1}" for i in range(confusion_matrix.shape[0])],
                          columns=[f"Predicted Class-{i+1}" for i in range(confusion_matrix.shape[0])])
    else:
        df = pd.DataFrame(data=confusion_matrix, 
                          index=[f"True {i}" for i in class_labels],
                          columns=[f"Predicted {i}" for i in class_labels])
    df = df.stack().reset_index()
    df.rename(columns={0:'instances', 'level_0':'actual', 'level_1':'predicted'}, inplace=True)
    df["colour"] = df.apply(lambda x: 
                               GREEN if x.actual.split()[1:] == x.predicted.split()[1:] 
                               else RED, axis=1)

    node_labels = pd.concat([df.actual, df.predicted]).unique()
    node_labels_indices = {label:index for index, label in enumerate(node_labels)}
    df =  df.assign(actual    = df.actual.apply(lambda x: node_labels_indices[x]),
                    predicted = df.predicted.apply(lambda x: node_labels_indices[x]))
    def get_link_text(row):
        if row["colour"] == GREEN:
            instance_count = row["instances"]
            source_class = ' '.join(node_labels[row['actual']].split()[1:])
            target_class = ' '.join(node_labels[row['predicted']].split()[1:])
            return f"{instance_count} {source_class} instances correctly classified as {target_class}"
        else:
            instance_count = row["instances"]
            source_class = ' '.join(node_labels[row['actual']].split()[1:])
            target_class = ' '.join(node_labels[row['predicted']].split()[1:])
            return f"{instance_count} {source_class} instances incorrectly classified as {target_class}"
        
    df["link_text"] = df.apply(get_link_text, axis = 1)
    return df, node_labels

根据混淆矩阵和类别标签绘制桑基图

def plot_confusion_matrix_as_sankey(confusion_matrix,  class_labels = None):
    df, labels = create_df_from_confusion_matrix(confusion_matrix,  class_labels)
    
    fig = go.Figure(data=[go.Sankey(
    
    node = dict(
      pad = 20,
      thickness = 20,
      line = dict(color = "gray", width = 1.0),
      label = labels,
      hovertemplate = "%{label} has total %{value:d} instances<extra></extra>"
    ),
    link = dict(
      source = df.actual, 
      target = df.predicted,
      value = df.instances,
      color = df.colour,
      customdata = df['link_text'], 
      hovertemplate = "%{customdata}<extra></extra>"  
    ))])

    fig.update_layout(title_text="Confusion Matrix Sankey Diagram", font_size=15,
                      width=500, height=400)
    
    return fig
confusion_matrix = np.array([[10, 4],
                             [2, 20]])

plot_confusion_matrix_as_sankey(confusion_matrix,  ['Fraud', 'Legit'])

👉更新:亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值