我读了这篇文章,但this并不能解决我的问题: 我有一个比较框架
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\u-kappa\u分数建立这些向量的成对距离矩阵
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\u分数相匹配。既然它是一个距离矩阵,那么一个人到自己的距离应该是0,但是,为什么矩阵中的分数不等于1——kappa分数呢?
否则,两个逻辑应用于同一个矩阵,我不明白。所以我相信我犯了个错误。你知道吗
谢谢你启发我。你知道吗
实际上,我意识到问题在于scipy平方函数; https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.distance.squareform.html 哪个州 “给定一个d*d(-1)/2大小的v,用于一些整数d>;=2编码距离,如所述,X=squareform(v)返回一个d乘d距离矩阵X。X[i,j]和X[j,i]值被设置为v[{n choose 2}-{n-i choose 2}+(j-u-1)],所有对角线元素都为零。”
kappa得分为0表示完全去相关和1完全相关(-1反向相关)
因此,我想只需通过正确的操作修改squareform创建的帧(我将在稍后编辑,一旦我用正确的方法计算出了负值)
相关问题 更多 >
编程相关推荐