我有一个数据帧,看起来是这样的:

label    predicted     F1  F2   F3 .... F40
major     minor         2   1   4
major     major         1   0   10
minor     patch         4   3   23
major     patch         2   1   11
minor     minor         0   4   8
patch     major         7   3   30
patch     minor         8   0   1
patch     patch         1   7   11

我有label,这是id的真实标签(没有显示,因为它不相关),predicted标签,然后在我的DF中设置了大约40个功能.

我们的 idea 是将这40个特征转换成2个维度,并将它们与预测的真实情况可视化.与他们的预测相比,majorminorpatch这三个标签都有9个 case .

对于主成分分析,它不能捕捉两个分量的很大差异,我不确定如何将PCA值与原始DF中的标签和预测作为一个整体进行映射.实现这一点的一种方法是将所有 case 分成9个数据帧并实现结果,但这不是我想要的.

有没有其他方法可以减少和可视化给定的数据?任何建议都将受到高度赞赏.

推荐答案

您可能希望考虑一个小的多重图,其中混淆矩阵的每个单元格都有一个散点图.

如果PCA不能很好地发挥作用,根据我的经验,t分布随机邻居嵌入(TSNE)通常是一个很好的 Select .

例如,对于同样具有三个预测类的虹膜数据集,它可能如下所示:

import pandas as pd
import seaborn as sns
from sklearn.manifold import TSNE

iris = sns.load_dataset('iris')

# Mock up some predictions.
iris['species_pred'] = (40 * ['setosa'] + 5 * ['versicolor'] + 5 * ['virginica']
                        + 40 * ['versicolor'] + 5 * ['setosa'] + 5 * ['virginica']
                        + 40 * ['virginica'] + 5 * ['versicolor'] + 5 * ['setosa'])

# Show confusion matrix.
pd.crosstab(iris.species, iris.species_pred)
  species_pred  setosa  versicolor  virginica
species             
setosa              40           5          5
versicolor           5          40          5
virginica            5           5         40
# Reduce features to two dimensions.
X = iris.iloc[:, :4].values
X_embedded = TSNE(n_components=2, init='random', learning_rate='auto'
                 ).fit_transform(X)
iris[['tsne_x', 'tsne_y']] = X_embedded

# Plot small multiples, corresponding to confusion matrix.
sns.set()
g = sns.FacetGrid(iris, row='species', col='species_pred', margin_titles=True)
g.map(sns.scatterplot, 'tsne_x', 'tsne_y');

small multiples plot

Python相关问答推荐

当值是一个integer时,在Python中使用JMESPath来验证字典中的值(例如:1)

使用numpy提取数据块

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

如何标记Spacy中不包含特定符号的单词?

Python虚拟环境的轻量级使用

OR—Tools中CP—SAT求解器的IntVar设置值

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

什么是最好的方法来切割一个相框到一个面具的第一个实例?

无法连接到Keycloat服务器

如何使regex代码只适用于空的目标单元格

pandas:对多级列框架的列进行排序/重新排序

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

如何按row_id/row_number过滤数据帧

从源代码显示不同的输出(机器学习)(Python)

在Django中重命名我的表后,旧表中的项目不会被移动或删除

按条件添加小计列

Python日志(log)库如何有效地获取lineno和funcName?

极柱内丢失类型信息""

Python:从目录内的文件导入目录