Yatta!

sunny1022.egloos.com

포토로그


최근 포토로그


5. k-means 알고리즘

클러스터링(군집화)의 한 방법. 활용분야가 매우 넓다.

[군집화의 순서]

1. 클러스터링을 수행할 데이터의 주제를 결정한다. (구분기준)

2. 얼마나 많은 클러스터를 만들것인가?

3. 데이터를 준비한다.

4. 어떠한 알고리즘을 이용할 것인가? (무작위 중심, k-means, k-means++ 등등)


 ※k-means의 과정
1. 무작위로 만드려는 클러스터의 개수만큼 중심을 정하고, 중심(Centroid)에 가까운 데이터를 클러스터에 포함시킨다.
2. 중심을 클러스터의 중앙으로 이동시킨다.
3. 다시 중심에 가까운 데이터를 클러스터에 포함시킨다.

 
위 과정을 중심의 위치가 변하지 않을 때까지 반복한다.


※※k-means++의 경우에는 처음에 적절한 중심의 위치를 찾아주는 알고리즘이다.(클러스터를 3개 만든다고 가정)
1. 무작위로 특정한 데이터를 설정한다.
2. 그 데이터와 가장 먼 데이터를 중심으로 설정한다.
3. 두 데이터와 가장 멀리있는 데이터를 중심으로 설정한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
import seaborn as sb #데이터 시각화를 위한 seaborn
import matplotlib.pyplot as plt
%matplotlib inline #notebook을 실행한 브라우저에서 그림을 볼 수 있게 한다.출력에 관함.
df = pd.DataFrame(columns=['x','y'])
df.loc[0= [2,3]
df.loc[1= [12,3]
df.loc[2= [24,33]
df.loc[3= [52,13]
df.loc[4= [22,30]
df.loc[5= [62,83]
df.loc[6= [82,3]
df.loc[7= [72,38]
df.loc[8= [92,30]
df.loc[9= [82,93]
df.loc[10= [28,33]
df.loc[11= [23,23]
df.loc[12= [62,38]
df.loc[13= [22,23]
df.loc[14= [52,13]
df.loc[15= [24,37]
df.loc[16= [52,13]
df.loc[17= [26,93]
df.loc[18= [62,83]
df.loc[19= [12,35]
df.loc[20= [22,39]
 
sb.lmplot('x','y',data=df, fit_reg=False, scatter_kws={"s"100}) #좌표평면에 출력
plt.title('k-means example')
plt.xlabel('x축')
plt.ylabel('y축')
 
points = df.values #dataFrame의 값들을 numpy객체로서 초기화해준다.
kmeans = KMeans(n_clusters=4).fit(points) #총 클러스터 4개를 생성한다.
kmeans.cluster_centers_ #결과로 4가지 중심값이 나온다.
#별다른 설정이 없으면 하나의 무작위값으로, 기본적으로 k-means++가 적용된다. 
 
kmeans.labels_ #k-means의 결과값이 나온다.
 
df['cluster'= kmeans.labels_ 
#하나의 클러스터라는 속성을 만들어주고 그 값으로는 클러스터의 id값이 들어가도록 한다.
df.head(20)#표로 보여준다.
 
sb.lmplot('x','y',data=df, fit_reg=False, scatter_kws={"s"150}, hue="cluster"#좌표평면에 
 
plt.title('k-means example')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cs

4. tensorflow의 Session 데이터과학-동빈나

1
2
3
4
5
6
7
8
9
10
import tensorflow as tf
= tf.constant(17.5)
= tf.constant(5.0)
= tf.add(a,b)
print(c) #c는 텐서객체이기때문에 "Tensor("Add:0", shape=(), dtype=float32)"가 출력된다.
         #즉, 텐서플로는 그래프를 정의하는 목적으로 흐름이 이뤄지도록 만들어야한다.
         #이러한 동작을 세션이 수행하게된다.
 
sess = tf.Session()
sess.run(c) #22.5가 출력된다.
cs

4. tensorflow의 주요함수 데이터과학-동빈나

tf.add
tf.subtract
tf.multiply
tf.truediv: 나눗셈의 몫
tf.mod: 나눗셈의 나머지
tf.abs

tf.negative: 음수반환
tf.sign: 부호반환(-1,0,1)
tf.square: 제곱
tf.sqrt
tf.pow
tf.maximum
tf.minimum
tf.exp
tf.log
tf.sin
tf.cos

1 2 3 4 5 6 7 8 9 10 다음