python实现FSC

来源:互联网 发布:gre软件 编辑:程序博客网 时间:2024/06/05 03:20
该篇与聚类小练习2对应,是它的python实现方法
程序
import numpy as npfi=open("D:\\alsun\data.txt")lin=fi.readlines()fi.close()data=np.ones([100,200])for i,lines in enumerate(lin):    data[i][:]=lines.split("\t")data1=zip(*data)data2=list(data1)data3=np.array(data2)z=np.zeros([2,100])z[0][:]=data3[0][:]z[1][:]=data3[1][:]w=np.ones([2,100])/100err=1alp=2lmd=0.5dd=np.ones(2)E=0#print(np.shape(data),np.shape(z))while err>0.05:    u = np.zeros([2, 200])    for i in range(200):        for j in range(2):            ul=(w[j][:])**alp            uz=(data3[i][:]-z[j][:])**2            dd[j]=np.inner(ul,uz)            if j==1 and (dd[0]>dd[1]):                u[1][i]=1            if j==1 and (dd[0]<=dd[1]):                u[0][i]=1    adds=0    for j in range(2):        for i in range(200):            uu=np.dot(u[j][i],w[j][:])**alp            uuu=(data3[i][j]-z[j][:])**2            adds=adds+np.inner(uu,uuu)    E1=w**alp    EE=np.sum(E1)+adds    err=abs(EE-E)    E=EE    for i in range(2):        for h in range(100):            sum1=0            for t in range(100):                sum2=0                sum3=0                for i in range(200):                    sum2=sum2+u[j][i]*((data3[i][j]-z[j][h])**2)                    sum3=sum3+u[j][i]*((data3[i][t]-z[j][t])**2)                sum1=sum1+((sum2+lmd)/(sum3+lmd))**(1/(alp-1))            w[j][h]=1/sum1    for j in range(2):        for h in range(100):            z[j][h]=np.dot(u[j][:],data[:][h])/np.sum(u[j][:])print(u)
结果:

[[ 1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.

  1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1.

  1.  1.  1. 1.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0.

  0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0.

  0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0.

  0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0.

  0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0.

  0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  0. 0.  0.  1. 1.  1.  1.

  1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1.

  1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1.

  1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1. 1.  1.  1.

  1.  1.]

0 0