์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ํฌ๋กค๋ง
- dataframe
- ์ค๋ฒ์ํ๋ง
- iloc
- datascience
- ๋์ํ๋ณธ
- Python
- PCA
- numpy
- ๋ ๋ฆฝํ๋ณธ
- pandas
- ํ์ด์ฌ
- ADsP
- LDA
- ๋ฐ์ดํฐ๋ถ์
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- ์ธ๋์ํ๋ง
- Lambda
- ํ ์คํธ๋ถ์
- ๋น ๋ฐ์ดํฐ
- t-test
- ์ฃผ์ฑ๋ถ๋ถ์
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- opencv
- DBSCAN
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- ๊ตฐ์งํ
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- ADP
- ์๋ํด๋ผ์ฐ๋
Data Science LAB
[Python] ํ์์ ์์ธ๋ถ์ (FA) ๋ณธ๋ฌธ
[Python] ํ์์ ์์ธ๋ถ์ (FA)
ใ ใ ใ ใ 2022. 9. 19. 03:29ํ์์ ์์ธ๋ถ์
- ์์ธ๋ถ์ (FA)์ ๊ด์ฐฐ๋ ๋ณ์ ์งํฉ์์ ๊ฐ์ฅ ์ํฅ๋ ฅ ์๋ ๊ธฐ๋ณธ ์์ธ ๋๋ ์ ์ฌ ๋ณ์๋ฅผ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ์์ ๋ฐ์ดํฐ ๋ถ์ ๋ฐฉ๋ฒ์ด๋ค .
- ๋ณ์ ์๋ฅผ ์ค์ฌ ๋ฐ์ดํฐ ํด์์ ๋์์ ์ค๋ค.
- ๋ชจ๋ ๋ณ์์์ ์ต๋ ๊ณต๋ถ์ฐ์ ์ถ์ถํ์ฌ ๊ณตํต ์ ์์ ๋ฃ๋๋ค.
- ์์ธ ๋ถ์์ ์์ฅ ์กฐ์ฌ, ๊ด๊ณ , ์ฌ๋ฆฌํ, ๊ธ์ต ๋ฐ ์ด์ ์ฐ๊ตฌ์ ๋๋ฆฌ ์ฌ์ฉ๋จ
ํ์์ ์์ธ ๋ถ์ ๋ฐฉ๋ฒ
1. ๋ณ์๊ฐ์ ์๊ดํ๋ ฌ๋ก๋ถํฐ ๊ณตํต ์์ธ ๋์ถ
2. ๊ณตํต ์์ธ์ ์ด์ฉํด ๋ณ์๊ฐ์ ์๊ด๊ด๊ณ ์ค๋ช
3. ์์ธ ๋ถํ๋(factor loading)์ด ์ ๋๊ฐ 0.3 ์ด์์ด๋ฉด ์ ์ํ๋ค๊ณ ํ๋จ
ํ์์ ์์ธ ๋ถ์์ ๋ชฉ์
1. ์๋ฃ ์์ฝ : ๋ณ์๋ค์ ๋ช๊ฐ์ ๊ณตํต๋ ๋ณ์ธ์ผ๋ก ๋ฌถ์
2. ์ถ์ ๋๊ตฌ ํ๋น์ฑ ๊ฒ์ : ๋ณ์ธ๋ค์ด ๋์ผํ ์์ธ์ผ๋ก ๋ฌถ์ด๋์ง๋ฅผ ํ์ธ
3. ๋ณ์ธ ๊ตฌ์กฐ ํ์ : ๋ณ์๋ค์ ์ํธ ๊ด๊ณ๋ฅผ ํ์
4. ๋ถํ์ํ ๋ณ์ธ ์ ๊ฑฐ : ์ค์๋๋ ์ค๋ช ๋ ฅ์ด ๋ฎ์ ๋ณ์๋ฅผ ์ ๊ฑฐ
5. ํ๊ท๋ถ์์ด๋ ํ๋ณ๋ถ์์ ์ค๋ช ๋ณ์ ์ ํ
PCA(์ฃผ์ฑ๋ถ๋ถ์)๊ณผ์ ์ฐจ์ด์
- PCA ์ฑ๋ถ์ ์ต๋ ๋ถ์ฐ๋์ ์ค๋ช , ์์ธ๋ถ์์ ๋ฐ์ดํฐ์ ๊ณต๋ถ์ฐ ์ค๋ช
- PCA ๊ตฌ์ฑ ์์๋ ์๋ก ์์ ํ ์ง๊ตํ์ง๋ง ์์ธ ๋ถ์์์๋ ๋ฐ๋์ ์ง๊ตํ์ง ์์
- PCA ์ฑ๋ถ์ ๊ด์ฐฐ๋ ๋ณ์์ ์ ํ ์กฐํฉ์ด์ง๋ง, ์์ธ๋ถ์์์ ๊ด์ฐฐ๋ ๋ณ์๋ ๊ด์ฐฐ๋์ง ์์ ๋ณ์ ๋๋ ์์ธ์ ์ ํ ์กฐํฉ
- PCA ๊ตฌ์ฑ ์์๋ ํด์ํ ์ ์์ง๋ง ์์ธ๋ถ์์ ๊ธฐ๋ณธ ์์๋ ๋ผ๋ฒจ๋ง ๋ฐ ํด์ ๊ฐ๋ฅ
- PCA๋ ์ผ์ข ์ ์ฐจ์ ๊ฐ์ ๋ฐฉ๋ฒ์ด์ง๋ง ์์ธ๋ถ์์ ์ ์ฌ ๋ณ์ ๋ฐฉ๋ฒ
- PCA๋ ๊ด์ฐฐ์ด์ง๋ง FA๋ ๋ชจ๋ธ๋ง ๊ธฐ์
ํ์์ ์์ธ ๋ถ์ ์ค์ต
- ๋ถ์์ ์ํํ๊ธฐ ์ ์ ๋ฐ์ดํฐ์ ์ ์์ธ์ฑ์ ํ๊ฐํด์ผํ๋ค.
1. Bartlett ๊ฒ์
: p-value๊ฐ 0.05๋ณด๋ค ์์ผ๋ฉด ํ์์ ์์ธ๋ถ์์ ์ ํฉํ ๋ฐ์ดํฐ๋ผ๊ณ ํ๋จํ๋ค.
#!pip install factor-analyzer
from factor_analyzer.factor_analyzer import calculate_bartlett_sphericity
ana = df3.drop(columns = 'group')
chi, p = calculate_bartlett_sphericity(ana)
p
# 0.12271947500271495
2. Kaiser-Meyer-Olkin(KMO) ๊ฒ์
- ๊ด์ธก๋ ๊ฐ ๋ณ์์ ์ ์ฒด ๋ชจ๋ธ์ ๋ํ ์ ์ ์ฑ์ ๊ฒฐ์
- KMO๋ ๊ด์ธก๋ ๋ชจ๋ ๋ณ์ ๊ฐ์ ๋ถ์ฐ ๋น์จ์ ์ถ์
- Bartlett๊ณผ ๋ฌ๋ฆฌ p๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ํ๋จ์ ๊ธฐ์ค์ด ๋ฐ๋ก ์์
- 0.6 ๋ฏธ๋ง์ KMO ๊ฐ์ ๋ถ์ ์ ํ๋ค๊ณ ํ๋จํ๋ฉฐ 0.8 ์ด์์ด๋ฉด ์ฐ์ํ๋ค๊ณ ํ ์ ์์
- KMO test๋ฅผ ํ๊ธฐ ์ํด์๋ ๋ณ์๊ฐ ์ต์ 3๊ฐ ์ด์
from factor_analyzer.factor_analyzer import calculate_kmo
kmo_all, kmo_model = calculate_kmo(ana)
kmo_model
# 0.4906789809649262
3. ์์ธ ์ ์ ํ
from factor_analyzer import FactorAnalyzer
fa = FactorAnalyzer(n_factors = len(ana.columns), rotation = None)
fa.fit(ana)
# Eigen๊ฐ ์ฒดํฌ
ev, v = fa.get_eigenvalues()
ev
plt.scatter(range(1, ana.shape[1]+1), ev)
plt.plot(range(1, ana.shape[1] + 1), ev)
plt.title('Scree Plot')
plt.xlabel('Factors')
plt.ylabel('Eigenvalue')
plt.grid()
plt.show()
- Eigen๊ฐ์ด 1 ์ด์์ด๊ฑฐ๋ ๊ทธ๋ํ ๊ธฐ์ธ๊ธฐ๊ฐ ์๋งํด์ง๊ธฐ ์ ๊น์ง ๋๋์ด์ผ ๋ฐ์ดํฐ ๊ฒฐํจ์ ์ต์ํํจ
- 10 ์์ Eigenvalue๊ฐ 1์ด ๋๋ ๊ฒ์ ํ์ธ
4. ํ์์ ์์ธ๋ถ์ ์ค์
fa = FactorAnalyzer(n_factors = 10, rotation = 'varimax')
fa.fit(ana)
efa_result = pd.DataFrame(fa.loadings_, index = ana.columns)
efa_result
- heatmap์ผ๋ก ์๊ฐํ
plt.figure(figsize = (6,10))
sns.heatmap(efa_result, cmap = 'Blues', annot=True, fmt='.2f')
'๐ Machine Learning > ๊ธฐ์ด ํต๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฑ๋ถ์ฐ๊ฒ์ (์ ๊ท๋ถํฌ์ ๋ชจ๋ถ์ฐ์ ๋ํ ๊ฒ์ ) (0) | 2022.09.20 |
---|---|
[Python] ๋คํญ ํ๊ท๋ถ์ (Polynomial Regression) (0) | 2022.08.24 |
[Python] ์ ํ ํ๊ท๋ถ์ (0) | 2022.08.22 |
[Python] ๊ต์ฐจ ๋ถ์ (์นด์ด์ ๊ณฑ ๊ฒ์ ) (0) | 2022.08.21 |
[Python] ์ด์ ๋ฐฐ์น ๋ถ์ฐ ๋ถ์ (Two-way ANOVA) (0) | 2022.08.20 |