[์ดํ] ํต๊ณ ๊ธฐ๋ฐ ์ด์ํ์ง ์๊ณ ๋ฆฌ์ฆ
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/ํต๊ณ-๊ธฐ๋ฐ-์ด์ํ์ง-์๊ณ ๋ฆฌ์ฆ-8rjzifg0
ํต๊ณ ๊ธฐ๋ฐ ์ด์ํ์ง
ํต๊ณ์ ์ ๊ทผ ๋ฐฉ์
์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ด ๋ฐ์ดํฐ์ โ์ ์์ ์ธโ ํ๋์ ํ์ตํ๊ณ ํต๊ณ์ ์ผ๋ก ์ด๋ก์ ์ธ ํ๋์ ๋ณด์ด๋ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ด์์น๋ก ์๋ณํฉ๋๋ค.
GMM (Gaussian Mixture Models)
- ๋งํฌ: https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html
- ์ ์: Gaussian Mixture Models(GMM)์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ์ฐ์์ ๋ถํฌ์ ํผํฉ์ผ๋ก ๋ชจ๋ธ๋งํ์ฌ ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์ํ ํ๋ฅ ์ ๊ณ์ฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ํด๋ฌ์คํฐ๋งํ๊ฑฐ๋ ์ด์์น๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
- ์ ํฉํ ๋ฐ์ดํฐ: ๋ฐ์ดํฐ๊ฐ ํ๋ ์ด์์ ์ ๊ท ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ผ๋ก ๊ฐ์ ํ ๋ ํจ๊ณผ์ ์ด๋ฉฐ, ๋ฐ์ดํฐ์ ์ ์ฌ์ ํด๋ฌ์คํฐ๋ฅผ ์๋ณํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
-
sklearn ํจ์:
sklearn.mixture.GaussianMixture
-
ํจ์ ์ค๋ช :
- GaussianMixture๋ ๊ฐ์ฐ์์ ํผํฉ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ํ๋ฅ ๋ถํฌ๋ฅผ ์ถ์ ํ๋ ํด๋์ค์ ๋๋ค. EM(Expectation-Maximization) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ฐ ๊ฐ์ฐ์์ ์ฑ๋ถ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ต์ ํํฉ๋๋ค.
- ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฐ์์ ๋ถํฌ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ , ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ํน์ ๊ฐ์ฐ์์ ๋ถํฌ์ ์ํ ํ๋ฅ ์ ๊ณ์ฐํฉ๋๋ค.
-
๋งค๊ฐ๋ณ์:
n_components
(int, default=1): ํผํฉ ์ฑ๋ถ์ ์๋ฅผ ์ ์ํฉ๋๋ค. ํด๋ฌ์คํฐ์ ์์ ๋์ํฉ๋๋ค.covariance_type
(str, default=โfullโ): ๊ณต๋ถ์ฐ ๋งคํธ๋ฆญ์ค์ ํํ๋ฅผ ์ ์ํฉ๋๋ค. โfullโ, โtiedโ, โdiagโ, โsphericalโ ์ค ์ ํํ ์ ์์ต๋๋ค.tol
(float, default=1e-3): EM ์๊ณ ๋ฆฌ์ฆ์ ์๋ ด ์๊ณ๊ฐ์ ๋๋ค. ์ด ๊ฐ ์ดํ๋ก ๋ก๊ทธ ๊ฐ๋ฅ๋ ๋ณํ๊ฐ ์์์ง๋ฉด ์๊ณ ๋ฆฌ์ฆ์ด ์๋ ดํฉ๋๋ค.reg_covar
(float, default=1e-6): ๊ณต๋ถ์ฐ ๋งคํธ๋ฆญ์ค์ ์ถ๊ฐ๋๋ ์ ๊ทํ ํญ์ ๋๋ค. ๊ณต๋ถ์ฐ ๋งคํธ๋ฆญ์ค๊ฐ ์์ ์ ๋ถํธ์ฑ์ ๊ฐ๋๋ก ๋ณด์ฅํฉ๋๋ค.max_iter
(int, default=100): EM ์๊ณ ๋ฆฌ์ฆ์ ์ต๋ ๋ฐ๋ณต ํ์์ ๋๋ค.n_init
(int, default=1): ์ด๊ธฐํ๋ฅผ ์ํํ ํ์์ ๋๋ค. ๊ฐ์ฅ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.init_params
(str, default=โkmeansโ): ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. โkmeansโ, โk-means++โ, โrandomโ, โrandom_from_dataโ ์ค ์ ํํ ์ ์์ต๋๋ค.weights_init
(array-like, default=None): ์ด๊ธฐ ๊ฐ์ค์น ๋ฐฐ์ด์ ๋๋ค. ์ ๊ณต๋์ง ์์ผ๋ฉดinit_params
๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐํ๋ฉ๋๋ค.means_init
(array-like, default=None): ์ด๊ธฐ ํ๊ท ๋ฐฐ์ด์ ๋๋ค. ์ ๊ณต๋์ง ์์ผ๋ฉดinit_params
๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐํ๋ฉ๋๋ค.precisions_init
(array-like, default=None): ์ด๊ธฐ ์ ๋ฐ๋(๊ณต๋ถ์ฐ์ ์ญํ๋ ฌ) ๋ฐฐ์ด์ ๋๋ค. ์ ๊ณต๋์ง ์์ผ๋ฉดinit_params
๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐํ๋ฉ๋๋ค.random_state
(int, RandomState instance or None, default=None): ๋์ ์์ฑ ์๋๋ฅผ ์ค์ ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฌํ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.warm_start
(bool, default=False): True๋ก ์ค์ ํ๋ฉด ์ด์ ์ ํ์ต๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๊ธฐํ์ ์ฌ์ฉํฉ๋๋ค.verbose
(int, default=0): ํ์ต ๊ณผ์ ์ ์งํ ์ํฉ์ ์ถ๋ ฅํฉ๋๋ค.verbose_interval
(int, default=10): ๋ช ๋ฒ์งธ ๋ฐ๋ณต๋ง๋ค ์ถ๋ ฅ์ ํ ์ง ์ค์ ํฉ๋๋ค.
-
์์ฑ:
weights_
: ๊ฐ ํผํฉ ์ฑ๋ถ์ ๊ฐ์ค์น ๋ฐฐ์ด์ ๋๋ค.means_
: ๊ฐ ํผํฉ ์ฑ๋ถ์ ํ๊ท ๋ฐฐ์ด์ ๋๋ค.covariances_
: ๊ฐ ํผํฉ ์ฑ๋ถ์ ๊ณต๋ถ์ฐ ํ๋ ฌ ๋ฐฐ์ด์ ๋๋ค.precisions_
: ๊ฐ ํผํฉ ์ฑ๋ถ์ ์ ๋ฐ๋ ํ๋ ฌ ๋ฐฐ์ด์ ๋๋ค.precisions_cholesky_
: ๊ฐ ํผํฉ ์ฑ๋ถ์ ์ ๋ฐ๋ ํ๋ ฌ์ Cholesky ๋ถํด์ ๋๋ค.converged_
: ๋ชจ๋ธ์ด ์๋ ดํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.n_iter_
: ์๋ ดํ๋ ๋ฐ ์ฌ์ฉ๋ ๋ฐ๋ณต ํ์์ ๋๋ค.lower_bound_
: EM ์๊ณ ๋ฆฌ์ฆ์์ ๊ณ์ฐ๋ ๋ก๊ทธ ๊ฐ๋ฅ๋์ ํํ ๊ฐ์ ๋๋ค.n_features_in_
: ํ์ต ์ ์ฌ์ฉ๋ ํน์ฑ์ ์์ ๋๋ค.feature_names_in_
: ํ์ต ์ ์ฌ์ฉ๋ ํน์ฑ ์ด๋ฆ ๋ฐฐ์ด์ ๋๋ค.
-
๋ฉ์๋:
aic(X)
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X์ ๋ํ ํ์ฌ ๋ชจ๋ธ์ Akaike ์ ๋ณด ๊ธฐ์ค(AIC)์ ๊ณ์ฐํฉ๋๋ค.bic(X)
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X์ ๋ํ ํ์ฌ ๋ชจ๋ธ์ ๋ฒ ์ด์ง์ ์ ๋ณด ๊ธฐ์ค(BIC)์ ๊ณ์ฐํฉ๋๋ค.fit(X[, y])
: EM ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ์ ํฉ๋๋ค.fit_predict(X[, y])
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ์ ํ๊ณ ๋ ์ด๋ธ์ ์์ธกํฉ๋๋ค.get_metadata_routing()
: ์ด ๊ฐ์ฒด์ ๋ฉํ๋ฐ์ดํฐ ๋ผ์ฐํ ์ ๊ฐ์ ธ์ต๋๋ค.get_params([deep])
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.predict(X)
: ํ์ต๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ฃผ์ด์ง ๋ฐ์ดํฐ ์ํ X์ ๋ ์ด๋ธ์ ์์ธกํฉ๋๋ค.predict_proba(X)
: ๊ฐ ์ํ์ ๋ํ ๊ตฌ์ฑ ์์์ ๋ฐ๋๋ฅผ ํ๊ฐํฉ๋๋ค.sample([n_samples])
: ํ์ต๋ ๊ฐ์ฐ์์ ๋ถํฌ์์ ๋๋ค ์ํ์ ์์ฑํฉ๋๋ค.score(X[, y])
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X์ ๋ํ ์ํ ๋น ํ๊ท ๋ก๊ทธ ๊ฐ๋ฅ๋๋ฅผ ๊ณ์ฐํฉ๋๋ค.score_samples(X)
: ๊ฐ ์ํ์ ๋ํ ๋ก๊ทธ ๊ฐ๋ฅ๋๋ฅผ ๊ณ์ฐํฉ๋๋ค.set_params(**params)
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํฉ๋๋ค.
-
์์:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
from sklearn.mixture import GaussianMixture import numpy as np # ์์ ๋ฐ์ดํฐ X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]]) # GMM ๋ชจ๋ธ ์์ฑ ๋ฐ ์ ํฉ gm = GaussianMixture(n_components=2, random_state=0).fit(X) # ๊ฐ ํผํฉ ์ฑ๋ถ์ ํ๊ท ์ถ๋ ฅ print(gm.means_) # ์์ธก ๋ผ๋ฒจ ์ถ๋ ฅ print(gm.predict([[0, 0], [12, 3]]))
-
โ๏ธ ์ด ์์ ๋ GaussianMixture๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ ๊ฐ์ ๊ฐ์ฐ์์ ์ฑ๋ถ์ผ๋ก ๋ชจ๋ธ๋งํ๊ณ , ์๋ก์ด ๋ฐ์ดํฐ ํฌ์ธํธ์ ํด๋ฌ์คํฐ๋ฅผ ์์ธกํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. GMM์ ๋ฐ์ดํฐ์ ์ ์ฌ์ ์ธ ๋ถํฌ๋ฅผ ํ์ตํ๊ณ ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ๋ง์ด๋ ์ด์์น ํ์ง๋ฅผ ์ํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
PCA (Principal Component Analysis)
- ๋งํฌ: https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
- ์ ์: PCA(Principal Component Analysis)๋ ๋ฐ์ดํฐ์ ์ฃผ์ฑ๋ถ์ ๋ถ์ํ์ฌ ์ฐจ์์ ์ถ์ํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ฃผ์ ๋ณ๋์ฑ์ ์บก์ฒํ๊ณ , ์ ๋ฐ์ดํฐ์ ์ฌ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ๊ฐ์ ์ฐจ์ด๋ฅผ ํตํด ์ด์์น๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
- ์ ํฉํ ๋ฐ์ดํฐ: ๊ณ ์ฐจ์ ๋ฐ์ดํฐ์ ์์ ์ฃผ์ ๋ณ๋์ฑ์ ํ์ ํ๊ณ ์ฐจ์์ ์ ์ฃผ๋ฅผ ์ค์ด๊ณ ์ ํ ๋ ์ ์ฉํฉ๋๋ค. ์ฃผ๋ก ๋ฐ์ดํฐ ์๊ฐํ, ๋ ธ์ด์ฆ ์ ๊ฑฐ, ํน์ง ์ถ์ถ ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
-
sklearn ํจ์:
sklearn.decomposition.PCA
-
ํจ์ ์ค๋ช :
- PCA๋ ํน์ด๊ฐ ๋ถํด(Singular Value Decomposition, SVD)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ ์ฐจ์์ผ๋ก ํฌ์ํ๋ ์ ํ ์ฐจ์ ์ถ์ ๊ธฐ๋ฒ์ ๋๋ค. ์ ๋ ฅ ๋ฐ์ดํฐ๋ ๊ฐ ํน์ฑ์ ๋ํด ์ค์ฌํ๋๋ฉฐ, SVD๋ฅผ ํตํด ์ฃผ์ฑ๋ถ์ ์ถ์ถํฉ๋๋ค.
- LAPACK ๊ตฌํ์ ์ ์ฒด SVD ๋๋ ๋ฐ์ดํฐ์ ํํ์ ์ถ์ถํ ์ฑ๋ถ์ ์์ ๋ฐ๋ผ ํ๋ฅ ์ SVD๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
๋งค๊ฐ๋ณ์:
n_components
(int, float or โmleโ, default=None): ์ ์งํ ์ฃผ์ฑ๋ถ์ ์์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฑ๋ถ์ ์ ์งํฉ๋๋ค.copy
(bool, default=True): True๋ก ์ค์ ํ๋ฉด fit ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๊ณ , False๋ก ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์๋๋ค.whiten
(bool, default=False): True๋ก ์ค์ ํ๋ฉด ์ฃผ์ฑ๋ถ ๋ฒกํฐ๋ฅผ ๋จ์ ๋ถ์ฐ์ ๊ฐ์ง๋๋ก ์ค์ผ์ผ๋งํฉ๋๋ค. ์ด๋ ์์ธก ์ ํ๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.svd_solver
(str, default=โautoโ): SVD๋ฅผ ๊ณ์ฐํ ๋ฐฉ๋ฒ์ ๋๋ค. โautoโ, โfullโ, โarpackโ, โrandomizedโ ์ค ์ ํํ ์ ์์ต๋๋ค.tol
(float, default=0.0): โarpackโ SVD ์๋ฒ์ ํน์ด๊ฐ์ ๋ํ ํ์ฉ ์ค์ฐจ์ ๋๋ค.iterated_power
(int or โautoโ, default=โautoโ): โrandomizedโ SVD ์๋ฒ์์ ํ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ณต ํ์์ ๋๋ค.n_oversamples
(int, default=10): โrandomizedโ SVD ์๋ฒ์์ ์ถ๊ฐ๋ก ์ํ๋งํ ๋ฌด์์ ๋ฒกํฐ์ ์์ ๋๋ค.power_iteration_normalizer
(str, default=โautoโ): โrandomizedโ SVD ์๋ฒ์ ํ์ ๋ฐ๋ณต ์ ๊ทํ ๋ฐฉ๋ฒ์ ๋๋ค.random_state
(int, RandomState instance or None, default=None): ๋์ ์์ฑ์ ์ ์ดํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฌํ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
-
์์ฑ:
components_
: ์ฃผ์ฑ๋ถ ๋ฒกํฐ ๋ฐฐ์ด์ ๋๋ค.explained_variance_
: ์ ํ๋ ๊ฐ ์ฑ๋ถ์ ์ํด ์ค๋ช ๋ ๋ถ์ฐ์ ์์ ๋๋ค.explained_variance_ratio_
: ์ ํ๋ ๊ฐ ์ฑ๋ถ์ ์ํด ์ค๋ช ๋ ๋ถ์ฐ์ ๋น์จ์ ๋๋ค.singular_values_
: ์ ํ๋ ๊ฐ ์ฑ๋ถ์ ํด๋นํ๋ ํน์ด๊ฐ์ ๋๋ค.mean_
: ๊ฐ ํน์ฑ์ ๊ฒฝํ์ ํ๊ท ์ ๋๋ค.n_components_
: ์ถ์ ๋ ์ฃผ์ฑ๋ถ์ ์์ ๋๋ค.n_samples_
: ํ๋ จ ๋ฐ์ดํฐ์ ์ํ ์์ ๋๋ค.noise_variance_
: ์ถ์ ๋ ๋ ธ์ด์ฆ ๊ณต๋ถ์ฐ์ ๋๋ค.n_features_in_
: ํ์ต ์ ๋ณธ ํน์ฑ์ ์์ ๋๋ค.feature_names_in_
: ํ์ต ์ ๋ณธ ํน์ฑ ์ด๋ฆ ๋ฐฐ์ด์ ๋๋ค.
-
๋ฉ์๋:
fit(X[, y])
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X๋ก ๋ชจ๋ธ์ ํ์ต์ํต๋๋ค.fit_transform(X[, y])
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X๋ก ๋ชจ๋ธ์ ํ์ต์ํค๊ณ , ์ฐจ์ ์ถ์๋ฅผ ์ ์ฉํฉ๋๋ค.get_covariance()
: ์์ฑ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ๊ณต๋ถ์ฐ์ ๊ณ์ฐํฉ๋๋ค.get_feature_names_out([input_features])
: ๋ณํ๋ ์ถ๋ ฅ ํน์ฑ ์ด๋ฆ์ ๊ฐ์ ธ์ต๋๋ค.get_metadata_routing()
: ์ด ๊ฐ์ฒด์ ๋ฉํ๋ฐ์ดํฐ ๋ผ์ฐํ ์ ๊ฐ์ ธ์ต๋๋ค.get_params([deep])
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.get_precision()
: ์์ฑ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ ๋ฐ๋ ํ๋ ฌ์ ๊ณ์ฐํฉ๋๋ค.inverse_transform(X)
: ๋ฐ์ดํฐ๋ฅผ ์๋์ ๊ณต๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.score(X[, y])
: ๋ชจ๋ ์ํ์ ํ๊ท ๋ก๊ทธ ๊ฐ๋ฅ๋๋ฅผ ๋ฐํํฉ๋๋ค.score_samples(X)
: ๊ฐ ์ํ์ ๋ก๊ทธ ๊ฐ๋ฅ๋๋ฅผ ๋ฐํํฉ๋๋ค.set_output(*[, transform])
: ์ถ๋ ฅ ์ปจํ ์ด๋๋ฅผ ์ค์ ํฉ๋๋ค.set_params(**params)
: ์ด ์ถ์ ๊ธฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํฉ๋๋ค.transform(X)
: ์ฃผ์ด์ง ๋ฐ์ดํฐ X์ ์ฐจ์ ์ถ์๋ฅผ ์ ์ฉํฉ๋๋ค.
-
์์:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
from sklearn.decomposition import PCA import numpy as np # ์์ ๋ฐ์ดํฐ X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) # PCA ๋ชจ๋ธ ์์ฑ ๋ฐ ์ ํฉ pca = PCA(n_components=2) pca.fit(X) # ์ค๋ช ๋ ๋ถ์ฐ ๋น์จ ์ถ๋ ฅ print(pca.explained_variance_ratio_) # ํน์ด๊ฐ ์ถ๋ ฅ print(pca.singular_values_) # ์๋ก์ด ๋ฐ์ดํฐ์ ๋ํ ์ฃผ์ฑ๋ถ ํฌ์ X_new = pca.transform([[0, 0], [12, 3]]) print(X_new)
-
โ๏ธ ์ด ์์ ๋ PCA๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ฃผ์ฑ๋ถ์ ์ถ์ถํ๊ณ , ์๋ก์ด ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ฃผ์ฑ๋ถ ๊ณต๊ฐ์ ํฌ์ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. PCA๋ ๋ฐ์ดํฐ์ ์ฃผ์ ๋ณ๋์ฑ์ ํ์ ํ๊ณ ์ฐจ์์ ์ถ์ํ์ฌ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ์์ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์์ต๋๋ค.