由于我是 python 和一般编程的新手,我的老师给了我一些工作。其中一些是与 MNIST 手写数字数据库一起使用的。每个数字都是 728 个分量的向量。当我想计算每个类的质心时,问题就来了。这是 728 个维度中每个数字的平均值。如果我有两个维度,我知道我应该做类似的事情
avgx=(x1+x2+x3)/3
等等......但我不知道如何用728维来做。我试过的是这样的:
labels = np.array(load_digits().target)
numbers = np.array(load_digits().data)
centroid=[]
i=0
count=[]
value=[0]*10
while(i<1):
j=0
value[i]=0
while j<len(labels):
if(labels[j]==i):
count[i]=count[i]+1
value[i]=value[i]+numbers[j]
j=j+1
valud=value[i]
centroid.append(x/count[i] for x in valud)
i=i+1
但它返回<generator object <genexpr> at 0x000002ADA1818F90>
而不是返回一个 728 维向量,这将是数字 0 的质心,然后是数字 1,依此类推......
编辑:感谢一个答案,我将代码修改为:
centroid=[]
labels = np.array(load_digits().target)
numbers = np.array(load_digits().data)
k=0
i=0
#First we need to calculate the centroid
while(i<10):
j=0
x=[]
while j<len(labels):
if(labels[j]==i):
x.append(numbers[j])
j=j+1
avg=np.array(x)
centroid.append((avg.mean(axis=0)))
i=i+1
而且效果很好,非常感谢