CSV 파일(인체활동)

test.csv

train.csv

전체코드

1. 라이브러리 등록

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.metrics import silhouette_samples, silhouette_score

import warnings
warnings.filterwarnings(action='ignore')

2. csv 데이터 읽기

# CSV 데이터 읽기
#tdata = pd.read_csv("./train.csv")
tedata = pd.read_csv("./test.csv")

3. 데이터 확인

# 데이터 확인
print(tedata.columns)
print(tedata.shape)
print(tedata.info())
print(tedata.describe())
print(tedata.head())
print(tedata.value_counts())
print(tedata.isnull().sum()) # 결측치 확인

결과

image.png

4. 특성, 타겟 분리

# 특성/타겟 분리
X = tedata[['tBodyAcc.mean.X', 'tBodyAcc.mean.Y', 'tBodyAcc.mean.Z',]]
X.head()

5. 엘보우 그래프를 통한 최적의 K 찾기

# 엘보우 그래프를 통한 최적의 K 찾기
inertia = []  # 군집 내 거리의 합 (Inertia) 저장

# 다양한 클러스터 개수(k)로 K-Means 수행
for k in range(1, 10):
    model_km = KMeans(n_clusters=k, random_state=42)
    model_km.fit(X)
    inertia.append(model_km.inertia_)  # inertia 값 저장

# 엘보우 그래프 시각화
plt.plot(range(1, 10), inertia, marker='o')
plt.xlabel('Number of Clusters')
plt.ylabel('Inertia')
plt.title('Elbow Method for Optimal k')
plt.show()

결과

image.png

6. 실루엣 스코어를 통한 최적의 K 찾기