<aside>
</aside>
18๊ฐ์์ ์ฐ๋ฆฌ๋ K-Means ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด ๊ณ ๊ฐ๋ค์ 4๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ํ์ ์ธ ์งํ๋ก ํ์ธํ์ต๋๋ค. ํ์ง๋ง "์ค๋ฃจ์ฃ ์ ์๊ฐ 0.3617์ด๋ค"๋ผ๋ ๋ง์ ๋น์ฆ๋์ค ๋ด๋น์์๊ฒ ์๋ฌด๋ฐ ์๋ฏธ๊ฐ ์์ฃ . ๊ตฐ์ง ๋ถ์์ ์ง์ ํ ๊ฐ์น๋ ์ด ์ซ์๋ค์ ์คํ ๊ฐ๋ฅํ ๋น์ฆ๋์ค ์ธ์ฌ์ดํธ๋ก ๋ฒ์ญํ๋ ๋ฐ ์์ต๋๋ค. ์ด๋ฒ ์๊ฐ์๋ plot_model
๋ก ๊ตฐ์ง์ ์๊ฐํํ๊ณ , assign_model
๋ก ๊ฐ ๊ณ ๊ฐ์๊ฒ ๊ทธ๋ฃน ๋ผ๋ฒจ์ ๋ถ์ธ ๋ค, ์ด ๊ทธ๋ฃน๋ค์ด ๊ฐ๊ฐ ์ด๋ค ํน์ง์ ๊ฐ์ง '๊ณ ๊ฐ ํ๋ฅด์๋'์ธ์ง ๋ฐํ๋ด๋ ํ์ ์์
์ ์์ํด ๋ณด๊ฒ ์ต๋๋ค!
plot_model()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ, ๊ณ ์ฐจ์ ๋ฐ์ดํฐ์ ํ์ฑ๋ ๊ตฐ์ง์ 2D ํ๋ฉด์ ์๊ฐํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด์ํ ์ ์์ต๋๋ค.assign_model()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณธ ๋ฐ์ดํฐ์ ๊ฐ ํ(๊ณ ๊ฐ)์ ๊ตฐ์ง ๋ผ๋ฒจ์ ํ ๋นํ ์ ์์ต๋๋ค.pandas
์ groupby()
๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๊ฐ ๊ตฐ์ง์ ํ๊ท ์ ์ธ ๊ตฌ๋งค ํจํด์ ๋ถ์ํ ์ ์์ต๋๋ค.๐ก plot_model๋ก ๊ตฐ์ง์ ๋ถํฌ๋ฅผ ๋์ผ๋ก ํ์ธํ๊ณ , assign_model๋ก ์ป์ ๊ฒฐ๊ณผ์ groupby๋ฅผ ์ ์ฉํ์ฌ ๊ฐ ๊ตฐ์ง์ ์ ์ฒด๋ฅผ ๋ฐํ๋ ๋๋ค.
# 1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ชจ๋ธ ์ค๋น (18๊ฐ ๋ด์ฉ)
from pycaret.datasets import get_data
from pycaret.clustering import setup, create_model, plot_model, assign_model
# ๋ฐ์ดํฐ ๋ก๋, ์ค์ , ๋ชจ๋ธ ์์ฑ
wholesale_df = get_data('wholesale')
clu_experiment = setup(data=wholesale_df, session_id=123)
kmeans_model = create_model('kmeans')
# 2. ๊ตฐ์ง ๊ฒฐ๊ณผ ์๊ฐํ
# 8์ฐจ์์ ๋ฐ์ดํฐ๋ฅผ 2์ฐจ์์ผ๋ก ์ถ์ํ์ฌ ๊ฐ ๊ตฐ์ง์ ๋ถํฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
print("--- 1. ๊ตฐ์ง ๋ถํฌ ์๊ฐํ ---")
plot_model(kmeans_model, plot='cluster')
# 3. ๊ฐ ๊ณ ๊ฐ์๊ฒ ๊ตฐ์ง ๋ผ๋ฒจ ํ ๋น
# ์๋ณธ ๋ฐ์ดํฐ์ 'Cluster' ์ปฌ๋ผ์ด ์ถ๊ฐ๋ ์๋ก์ด ๋ฐ์ดํฐํ๋ ์์ ์์ฑํฉ๋๋ค.
labeled_df = assign_model(kmeans_model)
print("\\n--- 2. ๊ตฐ์ง ๋ผ๋ฒจ์ด ํ ๋น๋ ๋ฐ์ดํฐ ---")
print(labeled_df.head())
# 4. ๊ตฐ์ง๋ณ ํน์ฑ ๋ถ์
# ๊ฐ ๊ตฐ์ง(Cluster)๋ณ๋ก ์ํ ์นดํ
๊ณ ๋ฆฌ์ ํ๊ท ์ง์ถ์ก์ ๊ณ์ฐํฉ๋๋ค.
cluster_profiles = labeled_df.groupby('Cluster').mean()
print("\\n--- 3. ๊ตฐ์ง๋ณ ํ๊ท ๊ตฌ๋งค ํจํด ๋ถ์ ---")
print(cluster_profiles)
plot_model(plot='cluster')
์คํ ๊ฒฐ๊ณผ4๊ฐ์ ๊ตฐ์ง(Cluster 0, 1, 2, 3)์ด 2์ฐจ์ ๊ณต๊ฐ์์ ์ด๋ป๊ฒ ๋ถํฌํ๊ณ ์๋ก ์ผ๋ง๋ ์ ๋ถ๋ฆฌ๋์ด ์๋์ง ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
assign_model()
์คํ ๊ฒฐ๊ณผ์๋ณธ ๋ฐ์ดํฐ์ ๋งจ ๋์ ๊ฐ ๊ณ ๊ฐ์ด ์ํ ๊ตฐ์ง ๋ฒํธ๊ฐ ๋ด๊ธด Cluster ์ปฌ๋ผ์ด ์ถ๊ฐ๋์์ต๋๋ค.