[์ดํ] ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์ด์ํ์ง ์๊ณ ๋ฆฌ์ฆ
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/๊ตฐ์งํ-๊ธฐ๋ฐ-์ด์ํ์ง-์๊ณ ๋ฆฌ์ฆ-sbjqco5v
๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ
๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ
์ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์น๋ฅผ ํ์งํฉ๋๋ค. ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ๋ค๋ฅธ ํฌ์ธํธ์์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๋ฉด ์ด์์น๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
K-Means Clustering ๊ธฐ๋ฐ ์ด์ํ์ง
- ๋งํฌ: https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
- ์ ์: ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ํด๋ฌ์คํฐ๋ก ๋๋๊ณ , ๊ฐ ํด๋ฌ์คํฐ ์ค์ฌ์์์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์น๋ฅผ ํ์งํฉ๋๋ค. ํด๋ฌ์คํฐ์ ์ํ์ง ์๊ฑฐ๋ ํด๋ฌ์คํฐ ์ค์ฌ์์ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ด์์น๋ก ๊ฐ์ฃผํฉ๋๋ค.
- ์ ํฉํ ๋ฐ์ดํฐ: ๋ฐ์ดํฐ์ ๊ตฐ์ง ๊ตฌ์กฐ๊ฐ ๋ช ํํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ๋๋ ์ง๋ ๊ฒฝ์ฐ ํจ๊ณผ์ ์ ๋๋ค.
-
sklearn ํจ์:
sklearn.cluster.KMeans
-
ํจ์ ์ค๋ช :
- K-Means ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ์ดํฐ๋ฅผ K๊ฐ์ ํด๋ฌ์คํฐ๋ก ๋๋๊ณ , ๊ฐ ํด๋ฌ์คํฐ์ ์ค์ฌ(์ผํธ๋ก์ด๋)์ ๋ฐ๋ณต์ ์ผ๋ก ๊ณ์ฐํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ํ์ฑํฉ๋๋ค. ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ํด๋ฌ์คํฐ ์ค์ฌ์ ํ ๋น๋ฉ๋๋ค.
- ์ด ์๊ณ ๋ฆฌ์ฆ์ ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์๋ํ๋ฉฐ, ํด๋ฌ์คํฐ ๋ด ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ฐ์ง๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์น๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
-
๋งค๊ฐ๋ณ์:
n_clusters
(int, default=8): ํ์ฑํ ํด๋ฌ์คํฐ์ ์์ ๋๋ค.init
(str, callable or array-like, default=โk-means++โ): ์ด๊ธฐ ํด๋ฌ์คํฐ ์ค์ฌ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. โk-means++โ๋ ์๋ ด ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ด๊ธฐ ํด๋ฌ์คํฐ ์ค์ฌ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.n_init
(int or str, default=โautoโ): ๋ค๋ฅธ ํด๋ฌ์คํฐ ์ค์ฌ ์๋๋ก K-Means ์๊ณ ๋ฆฌ์ฆ์ ์คํํ ํ์์ ๋๋ค. ์ต์ข ๊ฒฐ๊ณผ๋ ์ด ์ค ๊ฐ์ฅ ์ข์ ๊ฒฐ๊ณผ์ ๋๋ค.max_iter
(int, default=300): ๋จ์ผ ์คํ์์ K-Means ์๊ณ ๋ฆฌ์ฆ์ ์ต๋ ๋ฐ๋ณต ํ์์ ๋๋ค.tol
(float, default=1e-4): ์๋ ด์ ์ ์ธํ๊ธฐ ์ํ ํด๋ฌ์คํฐ ์ค์ฌ ๋ณํ์ ํ์ฉ ์ค์ฐจ์ ๋๋ค.verbose
(int, default=0): ์์ธ ์ถ๋ ฅ ๋ชจ๋์ ๋๋ค.random_state
(int, RandomState instance or None, default=None): ๋ฌด์์ ํด๋ฌ์คํฐ ์ค์ฌ ์ด๊ธฐํ๋ฅผ ์ํ ๋์ ์์ฑ๊ธฐ ์๋์ ๋๋ค.copy_x
(bool, default=True): True๋ก ์ค์ ํ๋ฉด ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ง ์๊ณ , False๋ก ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค.algorithm
(str, default=โlloydโ): K-Means ์๊ณ ๋ฆฌ์ฆ์ผ๋ก โlloydโ์ โelkanโ ์ค ์ ํํ ์ ์์ต๋๋ค. โelkanโ์ ์ผ๊ฐ๋ถ๋ฑ์์ ์ฌ์ฉํ์ฌ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
-
์์ฑ:
cluster_centers_
: ํด๋ฌ์คํฐ ์ค์ฌ์ ์ขํ ๋ฐฐ์ด์ ๋๋ค.labels_
: ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ํ ๋น๋ ํด๋ฌ์คํฐ ๋ผ๋ฒจ ๋ฐฐ์ด์ ๋๋ค.inertia_
: ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ํด๋ฌ์คํฐ ์ค์ฌ๊น์ง์ ๊ฑฐ๋ฆฌ์ ํฉ์ ๋๋ค.n_iter_
: ์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋ ๋ฐ๋ณต ํ์์ ๋๋ค.n_features_in_
: fit ๋์ ๋ณธ ํน์ฑ์ ์์ ๋๋ค.feature_names_in_
: fit ๋์ ๋ณธ ํน์ฑ ์ด๋ฆ ๋ฐฐ์ด์ ๋๋ค.
-
๋ฉ์๋:
fit(X[, y, sample_weight])
: K-Means ํด๋ฌ์คํฐ๋ง์ ์ํํฉ๋๋ค.fit_predict(X[, y, sample_weight])
: ํด๋ฌ์คํฐ ์ค์ฌ์ ๊ณ์ฐํ๊ณ ๊ฐ ์ํ์ ๋ํ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ฅผ ์์ธกํฉ๋๋ค.fit_transform(X[, y, sample_weight])
: ํด๋ฌ์คํฐ๋ง์ ์ํํ๊ณ X๋ฅผ ํด๋ฌ์คํฐ-๊ฑฐ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.get_feature_names_out([input_features])
: ๋ณํ์ ์ํ ์ถ๋ ฅ ํน์ฑ ์ด๋ฆ์ ๊ฐ์ ธ์ต๋๋ค.get_metadata_routing()
: ์ด ๊ฐ์ฒด์ ๋ฉํ๋ฐ์ดํฐ ๋ผ์ฐํ ์ ๊ฐ์ ธ์ต๋๋ค.get_params([deep])
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.predict(X[, sample_weight])
: ๊ฐ ์ํ์ด ์ํ ๊ฐ์ฅ ๊ฐ๊น์ด ํด๋ฌ์คํฐ๋ฅผ ์์ธกํฉ๋๋ค.score(X[, y, sample_weight])
: K-Means ๋ชฉ์ ํจ์์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํ๊ฐํฉ๋๋ค.set_fit_request(*[, sample_weight])
: fit ๋ฉ์๋์ ์ ๋ฌ๋ ๋ฉํ๋ฐ์ดํฐ ์์ฒญ์ ์ค์ ํฉ๋๋ค.set_output(*[, transform])
: ์ถ๋ ฅ ์ปจํ ์ด๋๋ฅผ ์ค์ ํฉ๋๋ค.set_params(**params)
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํฉ๋๋ค.set_predict_request(*[, sample_weight])
: predict ๋ฉ์๋์ ์ ๋ฌ๋ ๋ฉํ๋ฐ์ดํฐ ์์ฒญ์ ์ค์ ํฉ๋๋ค.set_score_request(*[, sample_weight])
: score ๋ฉ์๋์ ์ ๋ฌ๋ ๋ฉํ๋ฐ์ดํฐ ์์ฒญ์ ์ค์ ํฉ๋๋ค.transform(X)
: X๋ฅผ ํด๋ฌ์คํฐ-๊ฑฐ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.
-
์์:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
from sklearn.cluster import KMeans import numpy as np # ์์ ๋ฐ์ดํฐ X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]]) # K-Means ๋ชจ๋ธ ์์ฑ ๋ฐ ์ ํฉ kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(X) # ํด๋ฌ์คํฐ ๋ผ๋ฒจ ์ถ๋ ฅ print(kmeans.labels_) # ์๋ก์ด ๋ฐ์ดํฐ์ ๋ํ ํด๋ฌ์คํฐ ์์ธก print(kmeans.predict([[0, 0], [12, 3]])) # ํด๋ฌ์คํฐ ์ค์ฌ ์ถ๋ ฅ print(kmeans.cluster_centers_)
-
โ๏ธ ์ด ์์ ๋ K-Means๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ฐ์ดํฐ์ ์ ๋ํ ํด๋ฌ์คํฐ๋ง์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. K-Means๋ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ทธ๋ฃนํํ๊ณ , ๊ฐ ํด๋ฌ์คํฐ์ ์ค์ฌ์ ๊ณ์ฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
KNN (K-Nearest Neighbors)
- ๋งํฌ : https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestNeighbors.html
- ์ ์: K-Nearest Neighbors(KNN) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ํด ๊ฐ์ฅ ๊ฐ๊น์ด K๊ฐ์ ์ด์์ ์ฐพ๊ณ , ์ด ์ด์๋ค ๊ฐ์ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ๋ฐ์ดํฐ ํฌ์ธํธ์ ํน์ฑ์ ํ๋จํ๋ ๋น์ง๋ ํ์ต ๋ฐฉ๋ฒ์ ๋๋ค. ์ฃผ๋ก ์ด์์น ํ์ง, ๋ฐ์ดํฐ ๋ถ๋ฅ, ๊ตฐ์งํ ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ ํฉํ ๋ฐ์ดํฐ: ๊ฑฐ๋ฆฌ ์ธก์ ์ด ์๋ฏธ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ ๋ฐ์ดํฐ์ ์์ ํจ๊ณผ์ ์ด๋ฉฐ, ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ์ ์๋ ๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํฐ์ ์ ํฉํฉ๋๋ค. ํนํ, ์ด์์น ํ์ง์์๋ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ฐ์ง๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์น๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
-
sklearn ํจ์:
sklearn.neighbors.NearestNeighbors
-
ํจ์ ์ค๋ช :
- NearestNeighbors๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ์ฐพ๊ธฐ ์ํ ๋น์ง๋ ํ์ต ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ํ ๊ฑฐ๋ฆฌ ์ธก์ ๋ฐฉ๋ฒ๊ณผ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ํ๋ฉฐ, ์ฃผ๋ก K-์ด์ ํ์ ๋ฐ ๋ฐ๊ฒฝ ์ด์ ํ์์ ์ํํฉ๋๋ค.
-
๋งค๊ฐ๋ณ์:
n_neighbors
(int, default=5): K-์ด์ ํ์ ์ ์ฌ์ฉํ ์ด์์ ์์ ๋๋ค.radius
(float, default=1.0): ๋ฐ๊ฒฝ ์ด์ ํ์ ์ ์ฌ์ฉํ ๋ฐ๊ฒฝ ํฌ๊ธฐ์ ๋๋ค.algorithm
(str, default=โautoโ): ์ด์์ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค. โautoโ, โball_treeโ, โkd_treeโ, โbruteโ ์ค ์ ํํ ์ ์์ต๋๋ค.leaf_size
(int, default=30): BallTree ๋๋ KDTree์์ ์ฌ์ฉํ ๋ฆฌํ์ ํฌ๊ธฐ์ ๋๋ค. ์ด๋ ํธ๋ฆฌ ๊ตฌ์ถ ๋ฐ ์ฟผ๋ฆฌ ์๋์ ์ํฅ์ ์ค๋๋ค.metric
(str or callable, default=โminkowskiโ): ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ฌ์ฉํ ๋ฉํธ๋ฆญ์ ์ง์ ํฉ๋๋ค. โminkowskiโ๋ p=2์ผ ๋ ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ์ ๋์ผํฉ๋๋ค.p
(float, default=2): Minkowski ๋ฉํธ๋ฆญ์์ ์ฌ์ฉํ ํ๋ผ๋ฏธํฐ์ ๋๋ค. p=1์ ๋งจํดํผ ๊ฑฐ๋ฆฌ, p=2๋ ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ์ ํด๋นํฉ๋๋ค.metric_params
(dict, default=None): ๋ฉํธ๋ฆญ ํจ์์ ์ถ๊ฐ ๋งค๊ฐ๋ณ์์ ๋๋ค.n_jobs
(int, default=None): ๋ณ๋ ฌ๋ก ์คํํ ์์ ์ ์๋ฅผ ์ง์ ํฉ๋๋ค. -1๋ก ์ค์ ํ๋ฉด ๋ชจ๋ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
์์ฑ:
effective_metric_
: ์ด์ ๊ฒ์์ ์ฌ์ฉ๋ ๊ฑฐ๋ฆฌ ๋ฉํธ๋ฆญ์ ๋๋ค.effective_metric_params_
: ๊ฑฐ๋ฆฌ ๋ฉํธ๋ฆญ์ ์ฌ์ฉ๋ ๋งค๊ฐ๋ณ์์ ๋๋ค.n_features_in_
: fit ๋์ ๋ณธ ํน์ฑ์ ์์ ๋๋ค.feature_names_in_
: fit ๋์ ๋ณธ ํน์ฑ ์ด๋ฆ ๋ฐฐ์ด์ ๋๋ค.n_samples_fit_
: ํ์ต ๋ฐ์ดํฐ์ ์ํ ์์ ๋๋ค.
-
๋ฉ์๋:
fit(X[, y])
: ํ๋ จ ๋ฐ์ดํฐ์ ์์ ์ต๊ทผ์ ์ด์ ์ถ์ ๊ธฐ๋ฅผ ํ์ต์ํต๋๋ค.get_metadata_routing()
: ์ด ๊ฐ์ฒด์ ๋ฉํ๋ฐ์ดํฐ ๋ผ์ฐํ ์ ๊ฐ์ ธ์ต๋๋ค.get_params([deep])
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kneighbors([X, n_neighbors, return_distance])
: ํน์ ํฌ์ธํธ์ K-์ด์์ ์ฐพ์ต๋๋ค.kneighbors_graph([X, n_neighbors, mode])
: ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ํ K-์ด์ ๊ทธ๋ํ(๊ฐ์ค์น ํฌํจ)๋ฅผ ๊ณ์ฐํฉ๋๋ค.radius_neighbors([X, radius, ...])
: ํน์ ๋ฐ๊ฒฝ ๋ด์ ์ด์์ ์ฐพ์ต๋๋ค.radius_neighbors_graph([X, radius, mode, ...])
: ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ํ ๋ฐ๊ฒฝ ์ด์ ๊ทธ๋ํ(๊ฐ์ค์น ํฌํจ)๋ฅผ ๊ณ์ฐํฉ๋๋ค.set_params(**params)
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํฉ๋๋ค.
-
์์:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
from sklearn.neighbors import NearestNeighbors import numpy as np # ์์ ๋ฐ์ดํฐ samples = [[0, 0, 2], [1, 0, 0], [0, 0, 1]] # NearestNeighbors ๋ชจ๋ธ ์์ฑ ๋ฐ ์ ํฉ neigh = NearestNeighbors(n_neighbors=2, radius=0.4) neigh.fit(samples) # k-์ด์ ํ์ print(neigh.kneighbors([[0, 0, 1.3]], 2, return_distance=False)) # ๋ฐ๊ฒฝ ์ด์ ํ์ nbrs = neigh.radius_neighbors([[0, 0, 1.3]], 0.4, return_distance=False) print(np.asarray(nbrs[0][0]))
-
โ๏ธ ์ด ์์ ๋ NearestNeighbors๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ฐ์ดํฐ์ ์ ๋ํ K-์ด์ ํ์ ๋ฐ ๋ฐ๊ฒฝ ์ด์ ํ์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. KNN์ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๊น์ด ์ด์์ ์ฐพ๊ณ , ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ํน์ฑ์ ํ์ ํ๊ฑฐ๋ ์ด์์น๋ฅผ ํ์งํ ์ ์๋ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
K-Means์ KNN์ ์ฐจ์ด์
K-Means์ K-Nearest Neighbors(KNN)๋ ๋ชจ๋ ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ง๋ง, ๊ทธ ๋ชฉ์ ๊ณผ ์ฌ์ฉ ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค. ์ด ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ํ์ง ๊ด์ ์์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
-
K-Means
: ๋ฐ์ดํฐ๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ทธ๋ฃนํํ์ฌ ๊ฐ ํด๋ฌ์คํฐ ๋ด์ ๋ฐ์ง๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์น๋ฅผ ํ์งํฉ๋๋ค. ์ฃผ๋ก ๊ตฐ์งํ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๊ณ ์ด์์น๋ฅผ ํ์งํฉ๋๋ค.-
์ฌ์ฉ ๋ฐฉ์: ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ทธ๋ฃนํํ๊ณ ํด๋ฌ์คํฐ ์ค์ฌ์์์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์น๋ฅผ ํ๋จํฉ๋๋ค.
-
๊ตฐ์งํ ์ฌ๋ถ: ๋ช ํํ ํด๋ฌ์คํฐ๋ฅผ ํ์ฑํ์ฌ ํด๋ฌ์คํฐ ๋ด์ ๊ฑฐ๋ฆฌ๋ฅผ ํ๊ฐํฉ๋๋ค.
-
-
KNN
: ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๋๋ฅผ ํ๊ฐํ์ฌ ์ด์์น๋ฅผ ํ์งํฉ๋๋ค. ์ฃผ๋ก ๊ฐ๋ณ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ฐ๋๋ฅผ ํ๊ฐํ์ฌ ์ด์์น๋ฅผ ํ์งํฉ๋๋ค.-
์ฌ์ฉ ๋ฐฉ์: ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐ๋๋ฅผ ํ๊ฐํ๊ณ , ๋ฐ๋๊ฐ ๋ฎ์ ํฌ์ธํธ๋ฅผ ์ด์์น๋ก ํ๋จํฉ๋๋ค.
-
๊ตฐ์งํ ์ฌ๋ถ: ํด๋ฌ์คํฐ๋ฅผ ํ์ฑํ์ง ์๊ณ , ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ง์ ํ๊ฐํฉ๋๋ค.
-
์์ฝํ์๋ฉด, K-Means์ KNN์ ๋ชจ๋ ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์ด์ํ์ง๋ฅผ ์ํํ ์ ์์ง๋ง, K-Means๋ ๊ตฐ์งํ๋ฅผ ํตํด ํด๋ฌ์คํฐ ์ค์ฌ์์์ ๊ฑฐ๋ฆฌ๋ฅผ ํ๊ฐํ๋ ๋ฐ๋ฉด, KNN์ ๊ฐ๋ณ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ํ๊ฐํฉ๋๋ค.