我知道如何在R中执行此操作。但是,熊猫中是否有任何函数可以将数据帧转换为包含两个同时出现的计数的nxn同时出现矩阵。
例如矩阵df:
import pandas as pd
df = pd.DataFrame({'TFD' : ['AA', 'SL', 'BB', 'D0', 'Dk', 'FF'],
'Snack' : ['1', '0', '1', '1', '0', '0'],
'Trans' : ['1', '1', '1', '0', '0', '1'],
'Dop' : ['1', '0', '1', '0', '1', '1']}).set_index('TFD')
print df
>>>
Dop Snack Trans
TFD
AA 1 1 1
SL 0 0 1
BB 1 1 1
D0 0 1 0
Dk 1 0 0
FF 1 0 1
[6 rows x 3 columns]
将产生:
Dop Snack Trans
Dop 0 2 3
Snack 2 0 2
Trans 3 2 0
由于矩阵是在对角线上镜像的,所以我想会有一种优化代码的方法。
这是一个简单的线性代数,您将矩阵与其转置相乘(您的示例包含字符串,请不要忘记将它们转换为整数):
>>> df_asint = df.astype(int)
>>> coocc = df_asint.T.dot(df_asint)
>>> coocc
Dop Snack Trans
Dop 4 2 3
Snack 2 3 2
Trans 3 2 4
如果像R答案中一样,如果您想重设对角线,则可以使用numpy的fill_diagonal
:
>>> import numpy as np
>>> np.fill_diagonal(coocc.values, 0)
>>> coocc
Dop Snack Trans
Dop 0 2 3
Snack 2 0 2
Trans 3 2 0
问题内容: 我正在尝试执行以下操作 如何使用Numpy数组中的所有元素轻松高效地创建集合? 问题答案: 如果需要一组元素,这是另一种可能更快的方法: PS :之间执行比较后,和一个10x100阵列上,我发现,它们都在大约相同的速度来执行。对于3x3阵列,最快的版本是迭代器版本: 我建议这样做,因为它是内存消耗较少的版本(它随阵列的大小扩展得很好)。 PPS :还有一个NumPy函数可以执行类似的操
我正在尝试创建一个类似于这样的numpy数组: 所以这涉及到更新主对角线和它上面的两条对角线。 做这件事的有效方法是什么?
问题内容: 我有一个类似的名字列表: 以及文档列表,在每个文档中都提到了其中一些名称。 我想获得输出作为共现矩阵,例如: R中有一个解决此问题的方法(创建共现矩阵),但我无法在Python中做到这一点。我正在考虑在Pandas进行此操作,但没有任何进展! 问题答案: 显然,可以根据您的目的进行扩展,但是它会执行以下常规操作:
这得到了我想要的,但可能没有很好地扩展? 产量
我正在尝试开发共享库,目录结构如下 src/com/mycomapny 我的测试。棒极了 测试。棒极了 我的Jenkinsfile调用test.groovy中唯一可用的方法,需要输入。它导入MyTest并创建对象,调用构造函数,然后是执行MyTest.groovy文件中可用功能的实际方法 在这里,构造函数类从未从全局vars/test调用过。棒极了 我尝试从groovy调用类和方法,它工作正常,但
假设我有一个具有n个级别的因子变量y,我有预测和实际结果。如何构造混淆矩阵? 对于n=2的情况,这个问题已经得到了回答。看见 R:如何为预测模型制作混淆矩阵? 我试过的 这就是我能走多远 现在这必须以矩阵的形式呈现。 出身背景 混淆矩阵具有水平标签“实际类别”和垂直标签“预测类别”。矩阵元素的计数如下所示: 元素(1,1)=实际类的计数数为A,预测类的计数数为A 元素(1,2)=实际类别为A,预测