我读了这个,但这并没有解决我的问题:我有这个 initial_comparison_frame
id GO1 GO10 GO11 GO12 GO2 GO3 GO4 GO5 GO6 GO7 GO8 GO9
GO1 1 0 0 0 0 0 1 1 1 1 1 1
GO2 0 0 1 0 1 0 1 1 1 1 1 1
GO3 1 0 0 1 0 1 0 1 1 1 1 1
GO4 1 0 0 0 0 0 1 0 1 1 0 0
GO5 0 0 0 0 0 0 0 1 0 0 0 0
GO6 1 0 0 0 0 1 0 1 1 1 0 1
GO7 0 1 1 1 1 0 0 1 1 1 1 0
GO8 0 0 0 0 1 1 1 1 1 1 1 1
GO9 0 0 0 0 0 0 0 0 0 0 0 1
你可以这样生成:
initial_comparison_frame = pd.DataFrame([[1,0,0,0,0,0,1,1,1,1,1,1],[0,0,1,0,1,0,1,1,1,1,1,1],[1,0,0,1,0,1,0,1,1,1,1,1],[1,0,0,0,0,0,1,0,1,1,0,0],[0,0,0,0,0,0,0,1,0,0,0,0],[1,0,0,0,0,1,0,1,1,1,0,1],[0,1,1,1,1,0,0,1,1,1,1,0],[0,0,0,0,1,1,1,1,1,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,1]], index =["GO1","GO2","GO3","GO4","GO5","GO6","GO7","GO8","GO9"],columns = ["GO1","GO10","GO11","GO12","GO2","GO3","GO4","GO5","GO6","GO7","GO8","GO9"])
(我从 get_dummies 生成另一种方式,但这并没有改变任何东西)
我想建立这些向量的成对距离矩阵,使用 cohen_kappa_score
from sklearn.metrics import cohen_kappa_score
dist_matrix = pdist(initial_comparison_frame, cohen_kappa_score)
square_dist_matrix = squareform(dist_matrix)
square_dist_frame = pd.DataFrame (square_dist_matrix, index = count_frame['id'], columns = count_frame['id'])
像这样:
id GO1 GO2 GO3 GO4 GO5 GO6 GO7 GO8 GO9
GO1 0.0 0.47058823529411764 0.47058823529411764 0.5263157894736843 0.12195121951219523 0.5 -0.23529411764705865 0.47058823529411764 0.12195121951219523
GO2 0.47058823529411764 0.0 -0.125 0.09999999999999987 0.08695652173913038 0.0 0.25 0.625 0.08695652173913038
GO3 0.47058823529411764 -0.125 0.0 0.09999999999999987 0.08695652173913038 0.6666666666666667 -0.125 0.25 0.08695652173913038
GO4 0.5263157894736843 0.09999999999999987 0.09999999999999987 0.0 -0.15384615384615397 0.33333333333333337 -0.20000000000000018 0.09999999999999987 -0.15384615384615397
GO5 0.12195121951219523 0.08695652173913038 0.08695652173913038 -0.15384615384615397 0.0 0.16666666666666663 0.08695652173913038 0.08695652173913038 -0.09090909090909105
GO6 0.5 0.0 0.6666666666666667 0.33333333333333337 0.16666666666666663 0.0 -0.33333333333333326 0.33333333333333337 0.16666666666666663
GO7 -0.23529411764705865 0.25 -0.125 -0.20000000000000018 0.08695652173913038 -0.33333333333333326 0.0 -0.125 -0.17391304347826098
GO8 0.47058823529411764 0.625 0.25 0.09999999999999987 0.08695652173913038 0.33333333333333337 -0.125 0.0 0.08695652173913038
GO9 0.12195121951219523 0.08695652173913038 0.08695652173913038 -0.15384615384615397 -0.09090909090909105 0.16666666666666663 -0.17391304347826098 0.08695652173913038 0.0
为方便起见,您可以像这样生成:
square_dist_frame = pd.DataFrame([[0.0 0.47058823529411764 0.47058823529411764 0.5263157894736843 0.12195121951219523 0.5 -0.23529411764705865 0.47058823529411764 0.12195121951219523],[0.47058823529411764 0.0 -0.125 0.09999999999999987 0.08695652173913038 0.0 0.25 0.625 0.08695652173913038],[0.47058823529411764 -0.125 0.0 0.09999999999999987 0.08695652173913038 0.6666666666666667 -0.125 0.25 0.08695652173913038],[0.5263157894736843 0.09999999999999987 0.09999999999999987 0.0 -0.15384615384615397 0.33333333333333337 -0.20000000000000018 0.09999999999999987 -0.15384615384615397],[0.12195121951219523 0.08695652173913038 0.08695652173913038 -0.15384615384615397 0.0 0.16666666666666663 0.08695652173913038 0.08695652173913038 -0.09090909090909105],[0.5 0.0 0.6666666666666667 0.33333333333333337 0.16666666666666663 0.0 -0.33333333333333326 0.33333333333333337 0.16666666666666663],[-0.23529411764705865 0.25 -0.125 -0.20000000000000018 0.08695652173913038 -0.33333333333333326 0.0 -0.125 -0.17391304347826098],[0.47058823529411764 0.625 0.25 0.09999999999999987 0.08695652173913038 0.33333333333333337 -0.125 0.0 0.08695652173913038],[0.12195121951219523 0.08695652173913038 0.08695652173913038 -0.15384615384615397 -0.09090909090909105 0.16666666666666663 -0.17391304347826098 0.08695652173913038 0.0]], index =["GO1","GO2","GO3","GO4","GO5","GO6","GO7","GO8","GO9"],columns = ["GO1","GO2","GO3","GO4","GO5","GO6","GO7","GO8","GO9"])
我的实际问题是这些值与单个值的实际 kappa_score 匹配,对角线除外。既然是距离矩阵,那么一个人到自己的距离确实应该是0,但是,为什么矩阵中的分数不等于1——kappa分数呢?
否则,两个逻辑应用于同一个矩阵,我不明白。所以我相信我犯了一个错误。
谢谢你启发我。