๋ฐ์ํ
๊ตฐ์งํ๋ฅผ ํตํ ๋ฐ์ดํฐ ํน์ฑ ํ์ !
K-ํ๊ท ๊ตฐ์งํ
→ ์ฌ์ ์ ๊ตฐ์ง ๊ฐ์ k๋ฅผ ๊ฒฐ์
→ ๊ฐ ๊ตฐ์ง ์ค์ฌ๊ณผ ๋ฐ์ดํฐ ๊ฑฐ๋ฆฌ ์ฐจ์ ์ ๊ณฑ ํฉ์ ์ต์ํ ์ํค๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋ ๋ฐฉ์
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
df = pd.read_csv('/Users/gyeongmincho/Desktop/๋ํ๊ต/๋ํ๊ต ๊ต์ ๋ฐ ์์
์๋ฃ pdf/2ํ๋
/์ปดํ 2/์ฐ์ต/๊ตฐ์งํ/menu.csv')
df_data = df.loc[:, ['๊ฐ๊ฒฉ','ํ๋งค๋']]
km = KMeans(n_clusters=4, random_state = 0)
km.fit(df_data)
result = km.predict(df_data)
df.loc[:, 'result'] = result
plt.figure(figsize=(10, 5))
plt.scatter(df.loc[:, '๊ฐ๊ฒฉ'], df.loc[:, 'ํ๋งค๋'], c= result)
plt.show()
#๊ตฐ์ง์ ์ค์ฌ ์์น ์ถ๋ ฅ
km.cluster_centers_
#ํ ๋น ๊ฒฐ๊ณผ๋ฅผ DtaFrame์ ์ถ๊ฐ
df.loc[:,'result'] = result
scikit-learn
import sklearn
์ธ๊ณต์ง๋ฅ/๊ธฐ๊ณํ์ต/๋ฅ๋ฌ๋
- ์ธ๊ณต์ง๋ฅ : ๋ฌธ์ ํด๊ฒฐ์ ์ํด ์ธ๊ฐ์ ์ง๋ฅ์ ๋ชจ์ฌ
- ๊ธฐ๊ณํ์ต : ํ์ต๊ณผ ๊ฒฝํ์ ๊ฑฐ๋ญํ ์๋ก ๊ธฐ๊ณ๊ฐ ๋ฐ์ ํ๋ ๊ฒฝ์ฐ
- ๋ฅ๋ฌ๋ : ์ ๊ฒฝ๋ง์ ๊ธฐ์ด๋ก ํ์ฌ, ํ์ต์ด ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ
Elbow Method
- ์ ์ ํ ์ง์ ์ฐพ๊ธฐ (ํ๊ฟ์น ์ชฝ, ํ์ด๋์จ ์ชฝ)
๋ฐ๋ ๊ธฐ๋ฐ ๊ตฐ์งํ (DBSCAN)
→ ์์ ๋ฐ์ง๋ฆ๊ณผ ์ ์์ ํฌํจ๋ ์ต์ ์ ๊ฐ์๋ฅผ ์ฌ์ ์ ์ง์
- K - ํ๊ท ๊ตฐ์งํ์ ๋ฌธ์ → ์ด๊ฑฐ์ง๋ก ๋๋
๊ณ์ธต์ ๊ตฐ์งํ
→ ๋ฐ์ดํฐ๋ก ์ฃผ์ด์ง ๋ชจ๋ ๊ฐ์ฒด๋ผ๋ฆฌ์ ์ ์ฌ๋๋ฅผ ๊ณ์ฐ
→ ์ ์ฌ๋๊ฐ ๊ฐ์ฅ ๋์ ๋ ๊ฐ์ฒด๋ฅผ ํ๋์ ๊ตฐ์ง์ผ๋ก ๋ฌถ์
- Single Linkage : ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน์ ์ ์ฌ์ด ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ์ ์ ์ฌ๋๋ก ๊ฐ์ฃผ
- Complete Linkage : ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน์ ์ ์ฌ์ด ๊ฑฐ๋ฆฌ์ ์ต๋๊ฐ์ ์ ์ฌ๋๋ก ๊ฐ์ฃผ
- Average Linkage : ์๋ก๋ค๋ฅธ ๊ทธ๋ฃน์ ์ ์ฌ์ด ๊ฑฐ๋ฆฌ์ ํ๊ท ๊ฐ์ ์ ์ฌ๋๋ก ๊ฐ์ฃผ
import pandas as pd
import matplotlib.pyplot as plt
import scipy.cluster.hierarchy
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
df = pd.read_csv('housing.csv')
house_position = df[['x', 'y']]
linked = linkage(house_position, 'single')
dendrogram(linked, orientation = 'top')
๋ฐ์ํ