์์ธ 452๊ฐ ๋ฒ์ ๋์ ๊ต์กยท์์ ์ธํ๋ผ ๋ฐ๋๋ฅผ K-Means ํด๋ฌ์คํฐ๋ง์ผ๋ก ๋ถ๋ฅํ๊ณ , PCA๋ก ์๊ฐํํ๋ฉฐ, Decision Tree๋ก ํ๋ณ ๊ท์น์ ๋์ถํฉ๋๋ค.
- ์ฌ์ฉ ์๊ณ ๋ฆฌ์ฆ
- 1๋จ๊ณ โ ๋ฌธ์ ์ ์
- 2๋จ๊ณ โ ๋ฐ์ดํฐ ์์ง ๋ฐ ์ค๋ช
- 3๋จ๊ณ โ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- 4๋จ๊ณ โ ๋ชจ๋ธ ์ค๊ณ ๋ฐ ์ ์ฉ
- 5๋จ๊ณ โ ์ฑ๋ฅ ํ๊ฐ
- 6๋จ๊ณ โ ๊ฒฐ๊ณผ ๋ถ์ ๋ฐ ํด์
- ์คํ ๋ฐฉ๋ฒ
- ํ๋ก์ ํธ ๊ตฌ์กฐ
์์ ์์ ๋ค๋ฃฌ ์๊ณ ๋ฆฌ์ฆ ์ค ์ด ํ๋ก์ ํธ์์ ์ค์ ๋ก ์ ์ฉํ ํญ๋ชฉ์ ๋๋ค.
| ๋ถ๋ฅ | ์๊ณ ๋ฆฌ์ฆ | ์ ์ฉ ๋ชฉ์ |
|---|---|---|
| ๊ตฐ์งํ (Clustering) | K-Means Clustering | ์์ธ ๋ฒ์ ๋์ ์ธํ๋ผ ํน์ฑ ๊ธฐ์ค์ผ๋ก 4๊ฐ ๊ทธ๋ฃน์ผ๋ก ๋ถ๋ฅ |
| ์ฐจ์ ์ถ์ | Principal Component Analysis (PCA) | 3์ฐจ์ ๋ฐ์ดํฐ๋ฅผ 2์ฐจ์์ผ๋ก ์์ถํด ๊ตฐ์ง ๋ถํฌ ์๊ฐํ |
| ๋ถ๋ฅ (Classification) | Decision Tree | K-Means ๊ตฐ์ง ๋ ์ด๋ธ์ ํ์ตํด ๋๋ค ์ ํ ํ๋ณ ๊ท์น ๋์ถ ๋ฐ ๊ตฐ์ง ์ ํจ์ฑ ๊ฒ์ฆ |
์ด ์ธ์๋ StandardScaler(์ ๊ทํ), Silhouette Score(๊ตฐ์ง ํ์ง ํ๊ฐ), Elbow Method(์ต์ K ํ์), 5-Fold Cross Validation(ํธ๋ฆฌ ๊น์ด ์ต์ ํ), Ridge Regression(์ง๊ฐ ์์ธก ๋ณด์กฐ ๋ถ์)์ด ํ์ฉ๋์์ต๋๋ค.
"์์ธ ๋๋ค๋ค์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋๋ ์ ์์๊น? ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ธฐ์ค์ ๋ช ํํ ๊ท์น์ผ๋ก ํํํ ์ ์์๊น?"
์ฐ๋ฆฌ๋ ํํ "๊ต์ก ํน๊ตฌ๋ ์ง๊ฐ์ด ๋๋ค", "์์ ์ง๋ ์ฃผ๊ฑฐ ์ ํธ๋๊ฐ ๋ฎ๋ค"๊ณ ๋งํฉ๋๋ค. ํ์ง๋ง ์ด๋ฅผ ๋ฐ์ดํฐ๋ก ๊ฐ๊ด์ ์ผ๋ก ๊ฒ์ฆํ ์ฌ๋ก๋ ๋ง์ง ์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ ๋ค์ ์ธ ๊ฐ์ง ์ง๋ฌธ์ ๋ตํฉ๋๋ค.
- ์์ธ ๋๋ค๋ค์ ์ธํ๋ผ ํน์ฑ(์์๊ณต์ธยทํ๊ตยทํ์ ๋ฐ๋)์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋๋๋๊ฐ?
- ๊ฐ ๋๋ค ์ ํ์ ๊ตฌ๋ถํ๋ ์ธํ๋ผ ๋ฐ๋ ๊ธฐ์ค๊ฐ์ ์ผ๋ง์ธ๊ฐ?
- ์ธํ๋ผ ์ ํ๊ณผ ์ค๊ฑฐ๋๊ฐ ์ฌ์ด์๋ ์ด๋ค ๊ด๊ณ๊ฐ ์๋๊ฐ?
- ๋์: ์์ธ์ ์ ์ฒด 452๊ฐ ๋ฒ์ ๋
- ์ ๋ ฅ ๋ณ์: ๋๋ณ ์์๊ณต์ธ ์ / ๋ฉด์ (kmยฒ), ํ๊ต ์ / ๋ฉด์ , ํ์ ์ / ๋ฉด์ (๋ฐ๋ ๊ธฐ์ค)
- ๋น๊ต ์งํ: ์ํํธ ์ค๊ฑฐ๋๊ฐ (2025.04 ~ 2026.03)
๋ชจ๋ ๋ฐ์ดํฐ๋ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ์์ ์์งํ์์ต๋๋ค.
| ํ์ผ๋ช | ์ค๋ช | ํ์ฉ |
|---|---|---|
์์๊ณต์ธ.csv |
์์ธ์ ์ ์ฒด ์์๊ณต์ธ ์ฌ์ ์ฅ ๋ชฉ๋ก (์ฃผ์ ํฌํจ) | ํด๋ฌ์คํฐ๋ง ๋ณ์ |
ํ๊ต.csv |
์์ธ์ ์ดยท์คยท๊ณ ยท๋ํ๊ต ๋ชฉ๋ก | ํด๋ฌ์คํฐ๋ง ๋ณ์ |
ํ์.csv |
์์ธ์ ๋ฑ๋ก ํ์ ์ค ๊ฐ์ ์ค์ธ ๊ณณ | ํด๋ฌ์คํฐ๋ง ๋ณ์ |
ํ ์ง ๋ฉด์ .csv |
๋ฒ์ ๋๋ณ ๋ฉด์ (kmยฒ) | ๋ฐ๋ ๊ณ์ฐ ๊ธฐ์ค |
์ธ๊ตฌ๋ฐ๋.csv |
์์ธ์ ์๋ฉด๋๋ณ ์ธ๊ตฌ ํํฉ | ์ ํจ ๋ฒ์ ๋ 452๊ฐ ์ ์ ๊ธฐ์ค |
์์ธ์_์ค๊ฑฐ๋๊ฐ.csv |
์ํํธ ์ค๊ฑฐ๋๊ฐ (2025.04 ~ 2026.03) | ์ง๊ฐ ๋น๊ต ๋ถ์ |
| ๋ณ์ | ํ๊ท | ํ์คํธ์ฐจ | ์ต์๊ฐ | ์ต๋๊ฐ | ๋น๊ณ |
|---|---|---|---|---|---|
| ์์๊ณต์ธ ๋ฐ๋ (๊ฐ/kmยฒ) | 63.9 | 91.0 | 0.0 | 814.5 | ๋ช ๋(814) ๊ทน๋จ๊ฐ |
| ํ๊ต ๋ฐ๋ (๊ฐ/kmยฒ) | 5.5 | 17.8 | 0.0 | 288.8 | right-skewed |
| ํ์ ๋ฐ๋ (๊ฐ/kmยฒ) | 32.3 | 51.6 | 0.0 | 430.5 | ๋์น๋(430) ๊ทน๋จ๊ฐ |
๋ณ์ ์ ํ ๊ทผ๊ฑฐ: ์ธ๊ตฌ๋ฐ๋ยท์งํ์ฒ ์ญ ์ถ๊ฐ ์ Silhouette Score๊ฐ 0.49 โ 0.39๋ก ํ๋ฝ(noise ์ฆ๊ฐ)ํด ์ ์ธํ๊ณ , ์ํ ์ธํ๋ผ ํต์ฌ 3์ถ๋ง ์ฌ์ฉํฉ๋๋ค.
์๋ณธ ๋ฐ์ดํฐ (์์๊ณต์ธ / ํ๊ต / ํ์ / ๋ฉด์ )
โ
โผ
๋ฒ์ ๋๋ณ ๊ฐ์ ์ง๊ณ โ ๋ฉด์ (kmยฒ)์ผ๋ก ๋๋์ด ๋ฐ๋ ๊ณ์ฐ
โ
โผ
Log1p ๋ณํ โ right-skewed ๋ถํฌ ์ํ
(์: ๋์น๋ ํ์๋ฐ๋ 430 โ log(431)=6.07 / ์ ์ฒด ํ๊ท log(33)=3.53)
โ
โผ
StandardScaler โ ํ๊ท 0, ํ์คํธ์ฐจ 1๋ก ์ ๊ทํ
โ
โผ
Z-score ๊ธฐ๋ฐ ์ด์์น ์ ๊ฑฐ (|Z| > 3์ธ ๋๋ค 3๊ฐ ์ ๊ฑฐ)
๋จ, ๋ถ์์ ์ค์ํ ๋์น๋ยท์ ์ฌ๋์ ๊ฐ์ ๋ณด์กด
โ
โผ
์ต์ข
์
๋ ฅ ๋ฐ์ดํฐ: 449๊ฐ ๋ฒ์ ๋ ร 3๊ฐ ๋ณ์
๋ฐ๋ ๋ฐ์ดํฐ๋ ๊ทน๋จ์ ์ผ๋ก ์น์ฐ์ณ ์์ต๋๋ค. ๋ช ๋์ ์์๊ณต์ธ ๋ฐ๋(814/kmยฒ)๋ ํ๊ท (64/kmยฒ)์ 12๋ฐฐ์ ๋๋ค. ์ด๋๋ก ํด๋ฌ์คํฐ๋งํ๋ฉด ์๊ณ ๋ฆฌ์ฆ์ด ๊ทน๋จ๊ฐ์ ๋๋ ค๊ฐ ์๋ฏธ ์๋ ๊ตฐ์ง์ด ๋ง๋ค์ด์ง์ง ์์ต๋๋ค. Log1p ๋ณํ์ผ๋ก ๊ทน๋จ๊ฐ์ ์ํํ๋ฉด์๋ ๋๋ค ๊ฐ ์๋์ ์ฐจ์ด๋ ์ ์งํฉ๋๋ค.
| ์ฒ๋ฆฌ ๋ฐฉ๋ฒ | ๋์ | ๊ฒฐ๊ณผ |
|---|---|---|
| Z-score > 3 ์ ๊ฑฐ | ์ข ๋ก๊ตฌ ์ญ์ธ๋, ์ค๊ตฌ ํฅ์ธ๋, ๋งํฌ๊ตฌ ์ํ๋ | 3๊ฐ ๋ ์ ๊ฑฐ |
| ํ์ดํธ๋ฆฌ์คํธ ๋ณด์กด | ๊ฐ๋จ๊ตฌ ๋์น๋, ๊ฐ๋จ๊ตฌ ์ ์ฌ๋ | ๋ถ์ ์ค์ ๋๋ค ๊ฐ์ ํฌํจ |
K-Means๋ ๊ตฐ์ง ์(K)๋ฅผ ๋ฏธ๋ฆฌ ์ ํด์ผ ํฉ๋๋ค. Elbow Method(๊ด์ฑ๊ฐ ๊ฐ์ ์ถ์ด)์ Silhouette Score(๊ตฐ์ง ์์ง๋)๋ฅผ ํจ๊ป ํ์ธํด K=4๋ฅผ ์ ํํ์ต๋๋ค.
km = KMeans(n_clusters=4, random_state=42, n_init=10)
labels = km.fit_predict(X)- ์ ๋ ฅ: 449๊ฐ ๋ฒ์ ๋ ร 3๊ฐ ๋ณ์ (์์๊ณต์ธยทํ๊ตยทํ์ ์ ๊ทํ ๋ฐ๋)
- ์ถ๋ ฅ: ๊ฐ ๋ฒ์ ๋์ ํด๋ฌ์คํฐ ๋ฒํธ(0~3) ๋ถ์ฌ
K ํ์ ๊ฒฐ๊ณผ (data/processed/k_selection.png):
| K | Silhouette Score | ํด์ |
|---|---|---|
| 2 | 0.476 | ๋ถ๋ฆฌ ๊ณผ๋ |
| 3 | 0.420 | |
| 4 | 0.446 | ์ต์ (Elbow + Silhouette ๋์ ๊ณ ๋ ค) |
| 5 | 0.381 | ๊ณผ๋ถํ |
3์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ํ๋ก ๋ํ๋ด๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ PCA๋ก 2์ฐจ์์ผ๋ก ์์ถํด ๊ตฐ์ง ๋ถํฌ๋ฅผ ์๊ฐํํ์ต๋๋ค.
pca = PCA(n_components=2, random_state=42)
coords = pca.fit_transform(X)- PC1: ๊ต์ก ์ธํ๋ผ ์ถ (ํ์ยทํ๊ต ๋ฐ๋ ๋ฐ์, ์ค๋ช ๋ถ์ฐ ~70%)
- PC2: ์๊ถ ์ง์ค ์ถ (์์๊ณต์ธ ๋ฐ๋ ๋ฐ์, ์ค๋ช ๋ถ์ฐ ~20%)
- ๋์ ์ค๋ช ๋ถ์ฐ ~90% โ 3๊ฐ ๋ณ์์ ์ ๋ณด๋ฅผ ๊ฑฐ์ ์์ค ์์ด ๋ณด์กด
K-Means๊ฐ ๋ง๋ ํด๋ฌ์คํฐ ๋ ์ด๋ธ(0~3)์ target์ผ๋ก ๋๊ณ , ์ธํ๋ผ ๋ฐ๋๋ก ๋ถ๋ฅํ๋ Decision Tree๋ฅผ ํ์ตํฉ๋๋ค.
์
๋ ฅ(X): ์์๊ณต์ธ_๋ฐ๋, ํ๊ต_๋ฐ๋, ํ์_๋ฐ๋
์ถ๋ ฅ(y): K-Means ํด๋ฌ์คํฐ ๋ฒํธ (0, 1, 2, 3)
๋ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก ํ์ฉํฉ๋๋ค.
- ๊ท์น ๋์ถ: "ํ์ ๋ฐ๋ > X์ด๋ฉด ๊ต์ก ํนํ, ์์๊ณต์ธ ๋ฐ๋ > Y์ด๋ฉด ์์ ํนํ"์ ๊ฐ์ ๋ช ํํ ๊ธฐ์ค๊ฐ ์ถ์ถ
- ๊ตฐ์ง ์ ํจ์ฑ ๊ฒ์ฆ: ์ ํ๋๊ฐ ๋์์๋ก K-Means ๊ตฐ์ง์ด ์ธํ๋ผ๋ก ์ ์ค๋ช ๋๋ ์ค์ ํจํด์์ ์๋ฏธ
์ต์ ํธ๋ฆฌ ๊น์ด๋ 5-Fold Cross Validation์ผ๋ก ํ์ํฉ๋๋ค.
dt = DecisionTreeClassifier(max_depth=best_depth, random_state=42)
dt.fit(X_train, y_train)ํธ๋ฆฌ ๊น์ด๋ณ ์ ํ๋ ๋ณํ:
| ์งํ | ๊ฐ | ํด์ |
|---|---|---|
| Silhouette Score | 0.4458 | ๊ตฐ์ง ๊ฐ ๋ถ๋ฆฌ๊ฐ ๋๋ ทํ๋ฉฐ ์ ๋ขฐํ ์ ์๋ ์์ค |
์ผ๋ฐ์ ์ผ๋ก Silhouette Score 0.4 ์ด์์ด๋ฉด ์๋ฏธ ์๋ ๊ตฐ์ง ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋ค๊ณ ๋ด ๋๋ค.
| ํด๋ฌ์คํฐ | ์ด๋ฆ | ๋ฒ์ ๋ ์ |
|---|---|---|
| C0 | ์์ ยทํ์ ๋ณตํฉ | 119๊ฐ |
| C1 | ๊ต์กยท์ฃผ๊ฑฐ ๋ฐ์ง | 128๊ฐ |
| C2 | ์ ๋ฐ๋ ์ฃผ๊ฑฐ | 71๊ฐ |
| C3 | ์์ ํนํ | 131๊ฐ |
| ์ฃผ์ฑ๋ถ | ์ค๋ช ๋ถ์ฐ | ํด์ |
|---|---|---|
| PC1 | ~70% | ๊ต์ก ์ธํ๋ผ ์ถ (ํ์ยทํ๊ต ๋ฐ๋ ๋ฐ์) |
| PC2 | ~20% | ์๊ถ ์ง์ค ์ถ (์์๊ณต์ธ ๋ฐ๋ ๋ฐ์) |
| ํฉ๊ณ | ~90% | 3๊ฐ ๋ณ์์ ์ ๋ณด๋ฅผ 90% ์ด์ ๋ณด์กด |
| ์งํ | ๊ฐ | ํด์ |
|---|---|---|
| Test ์ ํ๋ | 98.9% | 449๊ฐ ๋ฒ์ ๋ ์ค ๋จ 1๊ฐ๋ง ์ค๋ถ๋ฅ |
| 5-Fold CV ์ ํ๋ | 95.8% | ๊ณผ์ ํฉ ์์ด ์์ ์ ์ผ๋ก ๋์ ์ฑ๋ฅ |
| ์ต์ ํธ๋ฆฌ ๊น์ด | 5 | Cross Validation์ผ๋ก ํ์ |
4๊ฐ ํด๋ฌ์คํฐ๊ฐ ์์๊ณต์ธยทํ๊ตยทํ์ ๋ฐ๋์์ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ํ๋์ ๋น๊ตํฉ๋๋ค.
| ํด๋ฌ์คํฐ | ์ด๋ฆ | ์ฃผ์ ํน์ง | ๋ํ ๋๋ค |
|---|---|---|---|
| C0 | ์์ ยทํ์ ๋ณตํฉ | ์์๊ณต์ธ๊ณผ ํ์ ๋ฐ๋๊ฐ ๋ชจ๋ ๋์ | ์ ์ฌ๋, ์ญ์ผ๋, ์๊ต๋, ์ธ์ฌ๋ |
| C1 | ๊ต์กยท์ฃผ๊ฑฐ ๋ฐ์ง | ํ์ยทํ๊ต ๋ฐ๋๊ฐ ์๋์ ์ผ๋ก ๋์ | ๋์น๋, ์ค๊ณ๋, ๋ฐํฌ๋, ์ ์ค๋ |
| C2 | ์ ๋ฐ๋ ์ฃผ๊ฑฐ | ๋ชจ๋ ์งํ๊ฐ ๋ฎ์ (์กฐ์ฉํ ์ฃผ๊ฑฐ์ง) | ์ด์ด๋, ์ธ๊ณก๋, ์จํ๋, ์๊ณก๋ |
| C3 | ์์ ํนํ | ์์๊ณต์ธ ๋ฐ๋๋ง ๊ทน๋จ์ ์ผ๋ก ๋์ | ๋ช ๋, ์๊ณต๋, ์ถฉ๋ฌด๋ก, ์์ง๋ก |
3๊ฐ ๋ณ์๋ฅผ 2๊ฐ์ ์ฃผ์ฑ๋ถ์ผ๋ก ์์ถํด ์์ธ 449๊ฐ ๋ฒ์ ๋์ ๋ถํฌ๋ฅผ ์๊ฐํํ์ต๋๋ค. ๊ฐ์ ์์์ ์ ๋ค์ด ๋น์ทํ ์ธํ๋ผ ํน์ฑ์ ๊ฐ์ง ๋๋ค๋ค์ ๋๋ค.
PC1๊ณผ PC2๊ฐ ๊ฐ๊ฐ ์ด๋ค ๋ณ์๋ฅผ ์ผ๋ง๋ ๋ฐ์ํ๋์ง ๋ถ์ํฉ๋๋ค.
| ์ฃผ์ฑ๋ถ | ํด์ | ์๋ฏธ |
|---|---|---|
| PC1 (๊ต์ก ์ธํ๋ผ ์ถ) | ํ์ยทํ๊ต ๋ณ์์ ๋์ ์์ ๊ฐ์ค์น | PC1์ด ๋์์๋ก ๊ต์ก ํนํ ์ง์ญ |
| PC2 (์๊ถ ์ง์ค ์ถ) | ์์๊ณต์ธ์ ์, ํ๊ต์ ์์ ๊ฐ์ค์น | PC2๊ฐ ๋์์๋ก ์์ ํนํ ์ง์ญ |
์ธํ๋ผ ๋ฐ๋ ๊ธฐ์ค๊ฐ์ผ๋ก ์ด๋ป๊ฒ 4๊ฐ ์ ํ์ด ๋๋๋์ง ํธ๋ฆฌ๋ก ํํํฉ๋๋ค.
449๊ฐ ๋ฒ์ ๋ ์ค ๋จ 1๊ฐ๋ง ์ค๋ถ๋ฅ. 4๊ฐ ํด๋ฌ์คํฐ ๋ชจ๋ ๋์ ์ ๋ฐ๋ยท์ฌํ์จ์ ๋ณด์ ๋๋ค.
K-Means ๋ ์ด๋ ์ฐจํธ์ Decision Tree Feature Importance๊ฐ ๊ฐ์ ๋ณ์๋ฅผ ์ค์ํ๊ฒ ๋ณธ๋ค๋ฉด, ๋ถ์ ๊ฒฐ๋ก ์ด ๋ ๋ชจ๋ธ์์ ์ผ๊ด๋๊ฒ ์ง์ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ธํ๋ผ ์ ํ์ด ์ค์ ์ง๊ฐ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ํ์ธํฉ๋๋ค.
| ํด๋ฌ์คํฐ | ์ด๋ฆ | ๊ฑฐ๋๊ฑด์ | ํ๊ท ๊ฐ | ์ค์๊ฐ |
|---|---|---|---|---|
| C0 | ์์ ยทํ์ ๋ณตํฉ | 17,443๊ฑด | 12.22์ต | 11.00์ต |
| C1 | ๊ต์กยท์ฃผ๊ฑฐ ๋ฐ์ง | 44,721๊ฑด | 11.68์ต | 9.28์ต |
| C2 | ์ ๋ฐ๋ ์ฃผ๊ฑฐ | 2,025๊ฑด | 13.43์ต | 10.55์ต |
| C3 | ์์ ํนํ | 6,932๊ฑด | 12.48์ต | 10.75์ต |
ํต์ฌ ์ธ์ฌ์ดํธ:
- ๊ต์กยท์ฃผ๊ฑฐ ๋ฐ์ง(C1) ํด๋ฌ์คํฐ๊ฐ ๊ฑฐ๋๋ 44,721๊ฑด์ผ๋ก ์ ์ฒด์ 63%๋ฅผ ์ฐจ์งํฉ๋๋ค. ํ์ยทํ๊ต ๋ฐ๋๊ฐ ๋์ ์ง์ญ์ ์์ธ ์ํํธ ๊ฑฐ๋๊ฐ ์ง์ค๋ฉ๋๋ค.
- ๋จ, ํ๊ท ๊ฐ(11.68์ต)์ ์ค์๊ฐ(9.28์ต) ๋ชจ๋ 4๊ฐ ํด๋ฌ์คํฐ ์ค ๊ฐ์ฅ ๋ฎ์ต๋๋ค. ๋์น๋ยท๋ฐํฌ๋ ๊ฐ์ ๊ณ ๊ฐ ์ง์ญ๊ณผ ๋ ธ์ยท๊ฐ๋ถยท์ํ ๋ฑ ์ค์ ๊ฐ ๊ต์ก ์ง์ญ์ด ๊ฐ์ ๊ตฐ์ง์ ํผ์ฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ ๋ฐ๋ ์ฃผ๊ฑฐ(C2) ํด๋ฌ์คํฐ๋ ๊ฑฐ๋๋(2,025๊ฑด)์ด ๊ฐ์ฅ ์ ์ง๋ง ํ๊ท ๊ฐ(13.43์ต)๋ ๊ฐ์ฅ ๋์ต๋๋ค. ์ด์ด๋์ฒ๋ผ ์กฐ์ฉํ๊ณ ํฌ์ํ ๊ณ ๊ธ ์ฃผ๊ฑฐ์ง์ ํ๋ฆฌ๋ฏธ์์ด ๋ฐ์๋ฉ๋๋ค.
- ์์ ํนํ(C3) ํด๋ฌ์คํฐ(๋ช ๋ยท์ถฉ๋ฌด๋ก ๋ฑ)์ ํ๊ท ๊ฐ๋ 12.48์ต์ผ๋ก, ์๊ถ ํ์ฑํ๊ฐ ๋ฐ๋์ ์ฃผ๊ฑฐ ๋น์ ํธ๋ฅผ ์๋ฏธํ์ง ์์์ ๋ณด์ฌ์ค๋๋ค.
๊ฐ ํด๋ฌ์คํฐ์ ํต์ฌ ์งํ์ ๋ํ ๋๋ค๋ฅผ ํ๋์ ์ ๋ฆฌํฉ๋๋ค.
"์์ธ์์ ๊ต์ก ์ธํ๋ผ๊ฐ ์ง์ค๋ ๋๋ค๊ฐ ๊ฑฐ๋๋์ ์๋์ 1์์ง๋ง, ๊ฐ๊ฒฉ์ด ๊ฐ์ฅ ๋์ ๊ณณ์ ์คํ๋ ค ์กฐ์ฉํ ์ ๋ฐ๋ ์ฃผ๊ฑฐ์ง์ ๋๋ค."
- ๊ต์ก ์ธํ๋ผ = ์ต๊ณ ์ ์ฃผ๊ฑฐ ์์: C1์ ๊ฑฐ๋๋์ด 44,721๊ฑด์ผ๋ก ์ ์ฒด ๊ฑฐ๋์ 63%๋ฅผ ์ฐจ์งํฉ๋๋ค. ํ์ยทํ๊ต ๋ฐ๋๊ฐ ๋์ ๋๋ค์ ์์ธ ์ํํธ ๊ฑฐ๋๊ฐ ์ง์ค๋ฉ๋๋ค.
- ๊ต์ก ์ ๊ทผ์ฑ์ ๋ชจ๋ ๊ฐ๊ฒฉ๋์ ๊ฑธ์ณ ์๋ค: C1์ ํ๊ท ๊ฐ 11.68์ต์ผ๋ก 4๊ฐ ํด๋ฌ์คํฐ ์ค ๊ฐ์ฅ ๋ฎ์ต๋๋ค. ๋์น๋(๊ณ ๊ฐ)๊ณผ ์ค๊ณ๋ยท๋ ธ์ยท๊ฐ๋ถ(์ค์ ๊ฐ)์ด ๊ฐ์ '๊ต์ก ํนํ' ๊ตฐ์ง์ ํจ๊ป ์ํด ํ๊ท ์ ๋์ด๋ด๋ฆฝ๋๋ค.
- ์กฐ์ฉํ ์ ๋ฐ๋ ์ฃผ๊ฑฐ์ง๊ฐ ์ค์ ๊ฐ๊ฒฉ์ ๊ฐ์ฅ ๋๋ค: C2(์ ๋ฐ๋ ์ฃผ๊ฑฐ)๋ ๊ฑฐ๋๋(2,025๊ฑด)์ด ๊ฐ์ฅ ์ ์ง๋ง ํ๊ท 13.43์ต์ผ๋ก ์ง๊ฐ 1์์ ๋๋ค. ์ด์ด๋์ฒ๋ผ ๋ฐ๋๊ฐ ๋ฎ๊ณ ํฌ์ํ ์ฃผ๊ฑฐ์ง์ ํ๋ฆฌ๋ฏธ์์ด ๋ถ์ต๋๋ค.
- ๊ฐ์ ๊ฐ๋จ๋ ๋ค๋ฅด๋ค: ์ ์ฌ๋(C0, ์์ ยทํ์ ๋ณตํฉ)๊ณผ ๋์น๋(C1, ๊ต์ก ํนํ)์ ๊ฐ์ ๊ฐ๋จ๊ตฌ์ง๋ง ์์ ํ ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ์ํฉ๋๋ค. ์ธํ๋ผ ๊ตฌ์ฑ์ด ๋ค๋ฅด๋ฉด ๋๋ค ์ฑ๊ฒฉ๋ ๋ค๋ฆ ๋๋ค.
- PCA๋ก ๋ณธ ์์ธ์ ๋ ์ถ: ์์ธ ๋๋ค์ ํน์ฑ์ ํฌ๊ฒ '๊ต์ก ์ธํ๋ผ ์ถ'๊ณผ '์๊ถ ์ง์ค ์ถ' ๋ ๊ฐ์ง๋ก ์ค๋ช ํ ์ ์์ต๋๋ค.
- Decision Tree๋ก ๊ฒ์ฆ: ์ ํ๋ 98.9%๋ก, K-Means ๊ตฐ์ง์ด ์์๋ก ๋๋ ๊ฒ ์๋๋ผ ์ธํ๋ผ ๋ฐ๋๋ก ์ค๋ช ๋๋ ์ค์ ํจํด์์ ํ์ธํ์ต๋๋ค.
git clone <repo-url>
cd DataMining-Project
pip install -r requirements.txt1. notebooks/02_preprocessing/kmeans_prep.ipynb
โ ์์๊ณต์ธยทํ๊ตยทํ์ ๋ฐ๋ ๊ณ์ฐ, Log1p ๋ณํ, StandardScaler ์ ๊ทํ
โ ์ถ๋ ฅ: data/processed/df_scaled.csv, df_density.csv
2. notebooks/03_modeling/kmeans.ipynb
โ Elbow Method + Silhouette Score๋ก ์ต์ K ํ์ (K=4 ์ ํ)
โ K-Means ํด๋ฌ์คํฐ๋ง ์ํ
โ ์ถ๋ ฅ: data/processed/kmeans_result.csv
โ ์๊ฐํ: notebooks/result/kmeans/k_selection.png, cluster_radar_k5.png, notebooks/result/pca/cluster_pca_k5.png
3. notebooks/03_modeling/price_cluster.ipynb
โ ์ํํธ ์ค๊ฑฐ๋๊ฐ ๋ฐ์ดํฐ์ ํด๋ฌ์คํฐ ๊ฒฐ๊ณผ ๋ณํฉ ๋ฐ ํต๊ณ ๋ถ์
โ ์ถ๋ ฅ: notebooks/result/kmeans/cluster_price.png, cluster_price_box.png
4. notebooks/03_modeling/cluster_decision_tree.ipynb
โ K-Means ๊ตฐ์ง ๋ ์ด๋ธ๋ก Decision Tree ํ์ต
โ ๊ตฐ์ง ํ๋ณ ๊ท์น ๋์ถ ๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ
โ ์ถ๋ ฅ: notebooks/result/decision_tree/dt_*.png
5. notebooks/04_visualization/viz_presentation.ipynb
โ ๋ ์ด๋ ์ฐจํธ, ์ง๊ฐ ๋น๊ต, PCA ์๊ฐํ, ์์ฝ ์นด๋ ์์ฑ
โ ์ถ๋ ฅ: notebooks/result/kmeans/ (pres_radar, pres_price, pres_summary)
notebooks/result/pca/ (pres_pca, pres_pca_explained, pres_pca_table)
notebooks/01_eda/๋ ธํธ๋ถ(store, school, academy, people)์ ๋ณ์ ํ์ ์ฐธ๊ณ ์ฉ์ผ๋ก, ์ ์์์ ๋ฌด๊ดํ๊ฒ ์คํ ๊ฐ๋ฅํฉ๋๋ค.
notebooks/03_modeling/predict.ipynb์ ์ธํ๋ผ ๋ฐ๋ โ ์ง๊ฐ Ridge ํ๊ท ๋ณด์กฐ ๋ถ์์ ๋๋ค.
๋ชจ๋ ๋
ธํธ๋ถ์ .git ํด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ก์ ํธ ๋ฃจํธ๋ฅผ ์๋ ํ์ํฉ๋๋ค.
๋ณ๋์ ๊ฒฝ๋ก ์์ ์์ด ์ด๋ ์์น์์ Jupyter๋ฅผ ์คํํด๋ ๋์ํฉ๋๋ค.
DataMining-Project/
โโโ data/
โ โโโ raw/ # ์๋ณธ CSV ๋ฐ์ดํฐ (์์ ๊ธ์ง)
โ โ โโโ ์์๊ณต์ธ.csv
โ โ โโโ ํ๊ต.csv
โ โ โโโ ํ์.csv
โ โ โโโ ํ ์ง ๋ฉด์ .csv
โ โ โโโ ์ธ๊ตฌ๋ฐ๋.csv
โ โ โโโ ์์ธ์_์ค๊ฑฐ๋๊ฐ.csv
โ โโโ processed/ # ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฌผ (CSV๋ง ์ ์ง)
โ โโโ df_scaled.csv # ์ ๊ทํ๋ ํผ์ฒ ๋ฐ์ดํฐ
โ โโโ df_density.csv # ๋ฒ์ ๋๋ณ ๋ฐ๋ ๋ฐ์ดํฐ
โ โโโ kmeans_result.csv # ํด๋ฌ์คํฐ๋ง ๊ฒฐ๊ณผ
โโโ notebooks/
โ โโโ 01_eda/ # ๋ณ์๋ณ ํ์์ ๋ถ์ (์ฐธ๊ณ ์ฉ)
โ โ โโโ store.ipynb
โ โ โโโ school.ipynb
โ โ โโโ academy.ipynb
โ โ โโโ people.ipynb
โ โโโ 02_preprocessing/ # ์ ์ฒ๋ฆฌ ๋ฐ ์ค์ผ์ผ๋ง
โ โ โโโ kmeans_prep.ipynb
โ โโโ 03_modeling/ # ๋ชจ๋ธ๋ง
โ โ โโโ kmeans.ipynb # K-Means ํด๋ฌ์คํฐ๋ง
โ โ โโโ price_cluster.ipynb # ์ง๊ฐ-๊ตฐ์ง ๋น๊ต
โ โ โโโ cluster_decision_tree.ipynb # Decision Tree ๋ถ๋ฅ
โ โ โโโ predict.ipynb # Ridge ํ๊ท (์ง๊ฐ ์์ธก ๋ณด์กฐ)
โ โโโ 04_visualization/ # ๋ฐํ์ฉ ์๊ฐํ
โ โ โโโ viz_presentation.ipynb
โ โโโ common/ # ๊ณตํต ์ ํธ๋ฆฌํฐ
โ โโโ result/ # ์๊ณ ๋ฆฌ์ฆ๋ณ ์๊ฐํ ๊ฒฐ๊ณผ
โ โโโ kmeans/ # K-Means ๊ด๋ จ ์ด๋ฏธ์ง
โ โ โโโ k_selection.png # Elbow + Silhouette ๊ทธ๋ํ
โ โ โโโ cluster_radar_k5.png # ํด๋ฌ์คํฐ๋ณ ๋ ์ด๋ ์ฐจํธ (์ค๊ฐ)
โ โ โโโ cluster_price.png # ํด๋ฌ์คํฐ๋ณ ํ๊ท ยท์ค์๊ฐ ์ง๊ฐ
โ โ โโโ cluster_price_box.png # ํด๋ฌ์คํฐ๋ณ ์ง๊ฐ ๋ฐ์คํ๋กฏ
โ โ โโโ pres_radar.png # ๋ฐํ์ฉ ๋ ์ด๋ ์ฐจํธ
โ โ โโโ pres_price.png # ๋ฐํ์ฉ ์ง๊ฐ ๋น๊ต
โ โ โโโ pres_summary.png # ํด๋ฌ์คํฐ ์์ฝ ์นด๋
โ โโโ pca/ # PCA ๊ด๋ จ ์ด๋ฏธ์ง
โ โ โโโ cluster_pca_k5.png # K-Means PCA ์ฐ์ ๋ (์ค๊ฐ)
โ โ โโโ pres_pca.png # ๋ฐํ์ฉ PCA ์ฐ์ ๋
โ โ โโโ pres_pca_explained.png # PCA ํด์ ์ฌ๋ผ์ด๋
โ โ โโโ pres_pca_table.png # PCA ๋ก๋ฉ ํ
์ด๋ธ
โ โโโ decision_tree/ # Decision Tree ๊ด๋ จ ์ด๋ฏธ์ง
โ โโโ dt_depth.png # ํธ๋ฆฌ ๊น์ด ํ์
โ โโโ dt_tree.png # Decision Tree ์๊ฐํ
โ โโโ dt_confusion.png # ํผ๋ ํ๋ ฌ
โ โโโ dt_importance.png # Feature Importance
โโโ requirements.txt
โโโ README.md
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ฉ๋ |
|---|---|
pandas |
๋ฐ์ดํฐ ๋ก๋ ๋ฐ ์ฒ๋ฆฌ |
numpy |
์์น ์ฐ์ฐ, Log1p ๋ณํ |
scikit-learn |
KMeans, PCA, DecisionTreeClassifier, StandardScaler, Ridge, silhouette_score |
matplotlib |
๋ ์ด๋ ์ฐจํธ, ์ฐ์ ๋, ํธ๋ฆฌ ์๊ฐํ ๋ฑ |









