파이썬 코드입니다.
R 코드를 ChatGPT에서 그대로 파이썬 코드로 변환시키고, StandardScaler를 사용하여 데이터를 표준화하는 내용만 더 추가했습니다.
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import seaborn as sns
# Read the data
data = pd.read_csv("C:/Users/skill/Desktop/PCA 프로필.csv")
# Select numeric columns
numeric_data = data.select_dtypes(include=[float, int])
# Standardize the data
scaler = StandardScaler()
scaled_data = scaler.fit_transform(numeric_data)
# Perform PCA
pca = PCA(n_components=2)
pca_result = pca.fit_transform(scaled_data)
scores = pd.DataFrame(pca_result, columns=['PC1', 'PC2'])
loadings = pd.DataFrame(pca.components_.T, columns=['PC1', 'PC2'], index=numeric_data.columns)
# Print scores and loadings
print("Scores:")
print(scores)
print("Loadings:")
print(loadings)
# Score plot for PC1 and PC2
plt.figure(figsize=(10, 7))
sns.scatterplot(x='PC1', y='PC2', data=scores)
plt.title('Score Plot (PC1 vs PC2)')
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.grid(True)
plt.show()
# Loading plot for PC1 and PC2
plt.figure(figsize=(10, 7))
sns.scatterplot(x='PC1', y='PC2', data=loadings)
for i in range(loadings.shape[0]):
plt.text(loadings.PC1[i], loadings.PC2[i], loadings.index[i], fontsize=12)
plt.title('Loading Plot (PC1 vs PC2)')
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.grid(True)
plt.show()
아나콘다와 함께 설치된 주피터 노트북에 코드를 입력했습니다.
PCA 결과가 잘 나왔습니다.
Orange는 파이썬을 기반으로 하기 때문에 결과가 동일합니다.
'자료처리' 카테고리의 다른 글
SPSS로 주성분 분석 수행할 때 고려할 사항 (0) | 2024.07.02 |
---|---|
주요 통계 소프트웨어 정리 (0) | 2024.07.01 |
R 주성분 분석 (0) | 2024.07.01 |
Orange Data Mining을 이용한 주성분 분석과 군집분석 (0) | 2024.07.01 |
SigmaPlot 주성분 분석 (0) | 2024.07.01 |
댓글