1. ์ ๊ทํ๋ถํฐ!(๊ฐ ๋ณ์์ ๊ธฐ์ค์ ๋ง์ถ๊ธฐ ์ํด ์ ๊ทํ ์์ ์ ํด์คฌ์ต๋๋ค.)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Z = scaler.fit_transform(df)
Z
2-1. Hierarchical Clustering ๋ฐ Dendrogram์ ํตํ ์๊ฐํ
import numpy as np
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import linkage, dendrogram
from sklearn.cluster import AgglomerativeClustering
Z = linkage(Z, method='ward', metric='euclidean') # Z์ ๋ํด linkage matrix ์์ฑ
dendrogram(Z, p=2, truncate_mode='lastp') # ๊ตฐ์ง๊ฐ์ 2๊ฐ๋ก ํด๋ณด๊ธฐ
dendrogram(Z, p=5, truncate_mode='lastp') # ๊ตฐ์ง๊ฐ์ 5๊ฐ
dendrogram(Z, p=569, truncate_mode='lastp') # ๊ทน๋จ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ฐฏ์๋งํผ 569๊ฐ ๊ตฐ์ง
๋๋ต ๊ตฐ์ง์ 2๊ฐ๋ก ํ์ ๋์ y๊ฐ์ด ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด๋ ๊ฒ์ผ๋ก ์ถ์ธก๋ฉ๋๋ค.
๋ด๋๋ก๊ทธ๋จ์ ํตํด ๋๋ต์ ์ผ๋ก ๊ตฐ์ง 2๊ฐ๊ฐ ํจ์จ์ ์ผ ๊ฒ์ด๋ผ ์ถ์ธก, ๋ฐ๋ผ์ K-means๋ฅผ ์ ์ฉํ์ฌ elbow method๋ฅผ ํตํ ์ ์ ํ ๊ตฐ์ง ๊ฐ์๋ฅผ ํ์ธํด๋ณด๋ คํฉ๋๋ค.(์๊ฐํ์ ํธํ๊ฒ PCA(2)๋ก ์ ์ฉํ์ฌ ์งํํฉ๋๋ค.
์์ 1๋ฒ ์ดํ ์๋ก์ด 2-2. PCA๋ฅผ ํตํด ๋ณ์๋ฅผ 2๊ฐ๋ก ์ค์ด๊ณ ์๊ฐํ
from sklearn.decomposition import PCA
pca = PCA(2)
pca.fit(Z)
B = pca.transform(Z)
pc1 = B.T[0]
pc2 = B.T[1] # B๋ฅผ ํตํด ์ป์ array๋ฅผ ๋ค์ง์ด์ ๊ฐ๊ฐ ์ series๋ฅผ pc1๊ณผ pc2๋ก ๋์์ต๋๋ค.
plt.scatter(pc1, pc2)
plt.show()
3. Kmeans์ elbow method ์๊ฐํํด๋ณด๊ธฐ
B_df1 = pd.DataFrame(B, columns=['pc1','pc2']) # ์์ B๋ฅผ dataframeํ
sum_of_squared_distances = []
K = range(1, 15)
for k in K:
km = KMeans(n_clusters = k)
km = km.fit(B_df1)
sum_of_squared_distances.append(km.inertia_)
plt.plot(K, sum_of_squared_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('Sum_of_squared_distances')
plt.title('Elbow Method For Optimal k')
plt.show()
๋ค์ ์ ๋งคํ๊ธด ํ์ง๋ง k=2์ผ ๋๊ฐ ๊ธ๊ฒฉํ๊ฒ ์ค์ด๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
'๐ฟ Data > ์ด๋ชจ์ ๋ชจ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฒกํฐ ๋ด์ ๋ฐ projection (0) | 2021.12.07 |
---|---|
Scree Plot ํ์ฉ๋ฒ (0) | 2021.12.07 |
Clustering(๊ตฐ์งํ) (0) | 2021.12.06 |
Dimension Reduction(์ฐจ์ ์ถ์) (0) | 2021.12.04 |
Linear Algebra + (Cov ;๊ณต๋ถ์ฐ, Cor ; ์๊ด๊ณ์) (0) | 2021.12.02 |