Sie sind auf Seite 1von 3

############################################################DATASET IMPORT

import csv

file=open("C:/Users/AdMin/OneDrive/Bureau/boston.csv","r")

R=csv.reader(file,delimiter=";")

data=[]

for e in R :

T=[]

for i in range (len(e)-1):

T.append(float(e[i]))

data.append(T)

print(data)

#############################################################DISTANCE

def distance(X,Y):

n=len(X)

s=0

for i in range (n):

s=s+(X[i]-Y[i])**2

return s**(1/2)

print(distance([2,3,4,5],[2,24,5,4]))

###########################################################

from random import randint

def centroide_depart(data,k):

C=[]

while len(C)<k :

i=randint(0,len(data)-1)

if data[i] not in C : C.append(data[i] )

return C
##########################################################

def centroide_proche(m,C):

i=0

d=distance(m,C[0])

for j in range(1,len(C)):

x=distance(m,C[j])

if x < d :

i=j

d=x

return i

C=centroide_depart(data,4)

print(centroide_proche(data[0],C))

##########################################################

def partitions(data,C):

D={i:[]for i in range ( len(C))}

for i in range(len(data)):

p=centroide_proche(data[i],C)

D[p].append(data[i])

return D

print(partitions(data,C))

############################################################

def calcul_centroide(L):

n=len(L)

p=len(L[0])

c=[0]*p

for m in L:

for j in range(p):

c[j]=c[j]+m[j]

for j in range(p):

c[j]=round(c[j]/n,2)
return c

######################################################

def maj_centroides(D):

C=[]

k=len(D)

for i in range(k):

c=calcul_centroide(D[i])

C.append(c)

return C

#################################################

def k_means(data,k,n):

C0=centroides_depart(data,k)

D=partitions(data,C0)

C1=maj_centroides(D)

c=1

while c<n and C0!=C1:

c=c+1

C0=C1

D=partitions(data,C0)

C1=maj_centroides(D)

return C1,D

###################################################

Das könnte Ihnen auch gefallen