我有两个二进制列表要比较。要比较每个对应值相等时的总和,并将其转换为百分比:
import numpy as np
l1 = [1,0,1]
l2 = [1,1,1]
print(np.dot(l1 , l2) / len(l1) * 100)
打印66.666
所以在这个例子中,l1和l2的亲密度是61.666。由于每个列表不太相似,因此“接近度”值减小。在
例如,使用值:
^{2}$返回0.0
如何绘制描述l1
和{l1
和{
使用散布:
import matplotlib.pyplot as plt
plt.scatter( 'x', 'y', data=pd.DataFrame({'x': l1, 'y': l2 }))
产生:
但这不合理吗?在
更新:
如果两个条目都为0,这将不会影响您的“相似性”
使用下面更新的代码来计算相似度,这个更新的相似性度量在计算最终分数时包含相应的0值。在
import numpy as np
l1 = [0,0,0]
l2 = [0,1,0]
print(len([a for a in np.isclose(l1 , l2) if(a)]) / len(l1) * 100)
返回:
66.66666666666666
或者,将下面的代码与度量值normalized_mutual_info_score
一起使用,对于相同或不同的列表,返回1.0,因此{
from sklearn.metrics.cluster import normalized_mutual_info_score
l1 = [1,0,1]
l2 = [0,1,0]
print(normalized_mutual_info_score(l1 , l2))
l1 = [0,0,0]
l2 = [0,0,0]
print(normalized_mutual_info_score(l1 , l2))
印刷品:
1.0
1.0
不,情节没有意义。你所做的基本上是向量之间的内积。根据这个度量,}应该是3D(在这种情况下)空间中的向量,这将度量它们是否面向相同的方向,是否具有相似的长度。输出是一个标量值,因此没有什么可绘制的。在
l1
和{如果您想显示每个组件的单独贡献,您可以执行以下操作
但我还是不确定这是否有意义。在
相关问题 更多 >
编程相关推荐