머신 러닝 (3) 기초 데이터 셋

 머신러닝 기초


!pip list

import pandas as pd
from sklearn.model_selection import train_test_split

# 1. 필요한 라이브러리 및 데이터 로드
import pandas as pd
from sklearn.model_selection import train_test_split

# Pima Indian Diabetes Dataset 로드 (UCI Machine Learning Repository)
# 데이터셋은 헤더가 없으므로, 컬럼명을 직접 지정
pima_columns = ['pregnancies', 'glucose', 'blood_pressure', 'skin_thickness', 'insulin', 'bmi', 'diabetes_pedigree_function', 'age', 'outcome']
pima_data_url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv'
pima_df = pd.read_csv(pima_data_url, names=pima_columns)

#  Feature 특징(X)과 Target 타겟(y) 분리
X = pima_df.drop('outcome', axis=1) #axis = 1 행과 열 중 열에 해당하는 것 삭제 , x = feature matrix
y = pima_df['outcome'] #target vector

# 2. 훈련/테스트 데이터 분할 (8:2 비율)
X_train, X_test, y_train, y_test = train_test_split( #분리할 수 있는 방법은 여러가지인데 sklearn train_test_split
    X, y,
    test_size=0.2, #data는 자동으로 0.8
    random_state=42, #
   stratify=y # 분류 문제이므로 stratify 적용
)

# 3. 분할 결과 확인
print("Original data shape:", X.shape)
print("X_train shape:", X_train.shape)
print("X_test shape:", X_test.shape)

# 이전 단계에서 X_train, y_train을 추가로 분할
# test_size=0.25 -> 80% 중 25%를 검증셋으로 할당 (전체의 20%)
X_train_final, X_val, y_train_final, y_val = train_test_split( #x_train, x_test, y train, y test
    X_train, y_train,
    test_size=0.25,
    random_state=42,
    #stratify=y_train # 분류 문제이므로 stratify 적용 #0,1의 비율
)

# 최종 분할 결과 확인 (6:2:2)
print("X_train_final shape:", X_train_final.shape) # 60%
print("X_val shape:", X_val.shape)                 # 20%
print("X_test shape:", X_test.shape)               # 20%

print('y_train_final 빈도 분석:')
display(y_train_final.value_counts().sort_index())

print('\ny_train_final 비율 분석:')
display(y_train_final.value_counts(normalize=True).sort_index())

print('y_val 빈도 분석:')
display(y_val.value_counts().sort_index())

print('\ny_val 비율 분석:')
display(y_val.value_counts(normalize=True).sort_index())

print('y_test 빈도 분석:')
display(y_test.value_counts().sort_index())

print('\ny_test 비율 분석:')
display(y_test.value_counts(normalize=True).sort_index())

댓글

이 블로그의 인기 게시물

베이스 캠프에서 (1)

베이스 캠프에서 (2)

Database 분석 (4)