<aside>

</aside>


๐Ÿ“– ์ฑ•ํ„ฐ ์†Œ๊ฐœ

18๊ฐ•์—์„œ ์šฐ๋ฆฌ๋Š” K-Means ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๊ณ ๊ฐ๋“ค์„ 4๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜ํ•™์ ์ธ ์ง€ํ‘œ๋กœ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ "์‹ค๋ฃจ์—ฃ ์ ์ˆ˜๊ฐ€ 0.3617์ด๋‹ค"๋ผ๋Š” ๋ง์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋‹ด๋‹น์ž์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†์ฃ . ๊ตฐ์ง‘ ๋ถ„์„์˜ ์ง„์ •ํ•œ ๊ฐ€์น˜๋Š” ์ด ์ˆซ์ž๋“ค์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์ธ์‚ฌ์ดํŠธ๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” plot_model๋กœ ๊ตฐ์ง‘์„ ์‹œ๊ฐํ™”ํ•˜๊ณ , assign_model๋กœ ๊ฐ ๊ณ ๊ฐ์—๊ฒŒ ๊ทธ๋ฃน ๋ผ๋ฒจ์„ ๋ถ™์ธ ๋’ค, ์ด ๊ทธ๋ฃน๋“ค์ด ๊ฐ๊ฐ ์–ด๋–ค ํŠน์ง•์„ ๊ฐ€์ง„ '๊ณ ๊ฐ ํŽ˜๋ฅด์†Œ๋‚˜'์ธ์ง€ ๋ฐํ˜€๋‚ด๋Š” ํƒ์ • ์ž‘์—…์„ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!


๐ŸŽฏ ์ฑ•ํ„ฐ ๋ชฉํ‘œ


๐Ÿ’ป ์ด๋ฒˆ ์ฑ•ํ„ฐ์˜ ์ „์ฒด ์ฝ”๋“œ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

์ด๋ฒˆ ์ฑ•ํ„ฐ์˜ ํ•ต์‹ฌ ์ฝ”๋“œ

๐Ÿ’ก 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)

์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

1. plot_model(plot='cluster') ์‹คํ–‰ ๊ฒฐ๊ณผ

4๊ฐœ์˜ ๊ตฐ์ง‘(Cluster 0, 1, 2, 3)์ด 2์ฐจ์› ๊ณต๊ฐ„์ƒ์— ์–ด๋–ป๊ฒŒ ๋ถ„ํฌํ•˜๊ณ  ์„œ๋กœ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š”์ง€ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

newplot.png

2. assign_model() ์‹คํ–‰ ๊ฒฐ๊ณผ

์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ๋งจ ๋์— ๊ฐ ๊ณ ๊ฐ์ด ์†ํ•œ ๊ตฐ์ง‘ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด Cluster ์ปฌ๋Ÿผ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.