EDA
Exploratory Data Analysis : 탐색적 데이터 분석
- 수집한 데이터를 다양한 각도에서 관찰하고 이해하는 과정
필요한 이유
- 데이터의 분포 및 값을 검토 → 데이터가 표현하는 현상을 더 잘 이해하고 데이터에 대한 잠재적인 문제 발견 가능
- 본격적인 분석에 들어가기 전, 데이터의 수집 결정 가능
- 다양한 각도에서 살펴보는 과정 → 문제 정의 단계에서 발견하지 못한 다양한 패턴을 발견하고 이를 바탕으로 가설을 수정할 수 있음
과정
- 분석의 목적, 변수 확인
- 개별 변수의 이름이나 설명 확인
- 데이터에 문제가 있는지 전체적으로 살펴보기
- head나 tail
- 이상치, 결측치 확인 등 다양한 탐색
- 데이터의 개별 속성 값 관찰만약 그렇지 않다면, 이유 찾기
- 각 속성 값이 예측한 범위와 분포를 갖는지 확인
- 속성 간의 관계에 초점을 맞추어, 개별 속성 관찰에서 찾아내지 못했던 패턴을 발견 (상관관계, 시각화 등)
최적의 K값 찾기
# 필요한 패키지 import
import pandas as pd
from sklearn.model_selection import cross_val_score, train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 데이터 로드
train_data = pd.read_csv("C:/Users/allye/Desktop/DSOB/WIDA Dacon/DCSTree/train.csv")
# type과 나머지 데이터들을 분리해줌
X = train_data.iloc[:, 2:]
y = train_data.iloc[:, 1]
# 데이터셋 분할 (학습용 데이터와 검증용 데이터)
# training과 test의 비율은 0.3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# K-fold Cross Validation을 이용하여 최적의 k 값을 찾음
k_candidates = [1, 3, 5, 7, 9]
cv_scores = []
for k in k_candidates:
knn = KNeighborsClassifier(n_neighbors=k)
scores = cross_val_score(knn, X_train, y_train, cv=10, scoring='accuracy')
cv_scores.append(scores.mean())
best_k = k_candidates[cv_scores.index(max(cv_scores))]
print("Best k value:", best_k)
# 최적의 k 값을 이용하여 모델 생성, 학습, 검증
model = KNeighborsClassifier(n_neighbors=best_k)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
K값이 5일 때 가장 높은 정확도를 가짐
이상치 찾기
- 개별 데이터 관찰데이터의 앞, 뒤 or 무작위로 표본을 추출해서 관찰해야 함.
- 단, 이상치들은 작은 크기의 표본에 나타나지 않을 수 있음
- 눈으로 쭉 훑어보면서 전체적인 추세와 특이사항 관찰
train_data.head()
train_data.tail()
train_data.isnull().sum()
- 통계 값 활용
적절한 요약 통계 지표(summary statistics)를 사용
- 데이터의 중심 → 평균(mean), 중앙값(median), 최빈값(mode)
- 데이터의 분산 → 범위(range), 분산(variance)
통계 지표를 이용할 때는 데이터의 특성에 주의해야 함
- 평균에는 집합 내 모든 데이터 값이 반영되기 때문에, 이상치가 이에 영향을 미침
- 중앙값에는 가운데 위치한 값 하나가 사용되기 때문에, 이상치가 존재해도 대표성이 있는 결과를 얻을 수 있음
train_data.describe()
count : null값을 제외한 데이터의 총 개수
mean : 평균
std : 표준편차
# 중앙값
train_data.median()
# 분산
train_data.var()
- 시각화 활용
- 일단은 시각적으로 표현이 되어있는 것을 보면, 분석에 도움이 많이 됩니다. 시각화를 통해 주어진 데이터의 개별 속성에 어떤 통계 지표가 적절한지 결정할 수 있습니다. 시각화 방법에는 확률밀도 함수, 히스토그램, 점 플롯(dotplot), 워드 클라우드, 시계열 차트, 지도 등이 있습니다.
'WIDA > DACON 분류-회귀' 카테고리의 다른 글
[DACON/참고자료] 앙상블 모델 (0) | 2023.05.01 |
---|---|
[DACON/참고자료] SVM 참고자료 (0) | 2023.04.26 |
[DACON/김규리] 파이썬을 이용한 EDA (0) | 2023.04.07 |
[DACON/김경은] 파이썬을 이용한 EDA (0) | 2023.04.07 |
[DACON/김세연] 파이썬을 이용한 EDA (0) | 2023.04.07 |