Hackathon을 진행하며 데이터 분석에 사용한 함수와 성능 개선 코드, 그리고 시도는 해보았지만 사용하지는 않은 방법들에 대해 알아보자
코드 원본은 여기에서 확인 가능합니다.
describe함수의 경우 위의 그림과 같이 데이터프레임의 형태로 몇 개의 Feature들이 있는지 파악이 가능하고, Count를 통해 각 Feature마다 데이터가 몇개 있는지 파악 가능하다. 예를 들어 bant_submit 처럼 결측치가 없는 경우, 59299개의 데이터가 존재하고, com_reg_ver_win_rate 의 경우 44731개의 결측치가 존재해, Count가 14569로 표시된 것을 확인할 수 있다.
또한, std행을 통해 각 Colum별 표준편차를 확인할 수 있으며, customer_country와 같이 std가 너무 큰 값을 가지고 있다면 이상치가 존재한다고 생각해볼 수 있다.
info함수의 경우 위의 그림과 같이 결측치가 있는지 없는지와 데이터 타입을 간단하게 확인 가능하다.
위 그림과 같이 .value_counts() 함수를 통해 확인 하고자 하는 Column의 각 Value(Class)에 대한 발생횟수를 파악할 수 있다.
위 그림과 같이 .score() 함수를 통해 학습한 모델이 각 데이터 별로 얼마나 잘 맞는지 정확도를 확인할 수 있다.
# 상관관계 파악 / 상관 관계 높고, 중요도 낮은 특성을 제거해 모델 복잡도를 줄여 일반화 높임
import seaborn as sns
# 상관계수 행렬 계산 (절대값 사용)
corr_matrix = np.abs(df_train.corr())
# plot
plt.figure(figsize=(20, 30))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.show()
# 상관계수 임계값 설정
corr_threshold = 0.5
# 상관계수가 임계값 이상인 특성 찾기
to_drop = [column for column in corr_matrix.columns if any(corr_matrix[column][corr_matrix[column] != 1] > corr_threshold)]
print(to_drop)