# Pima Indians 데이터셋을 위한 XGBoost 모델
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 데이터 로드
def train():
config_defaults = {
"booster": "gbtree",
"max_depth": 3,
"learning_rate": 0.1,
"subsample": 1,
"seed": 117,
"test_size": 0.33,
}
with wandb.init(config=config_defaults) as run: # sweep 실행 중 기본값이 재정의됨
config = run.config
# 데이터를 로드하고 예측 변수와 타겟으로 분할
dataset = loadtxt("pima-indians-diabetes.data.csv", delimiter=",")
X, Y = dataset[:, :8], dataset[:, 8]
# 데이터를 학습 세트와 테스트 세트로 분할
X_train, X_test, y_train, y_test = train_test_split(X, Y,
test_size=config.test_size,
random_state=config.seed)
# 학습 데이터로 모델 학습
model = XGBClassifier(booster=config.booster, max_depth=config.max_depth,
learning_rate=config.learning_rate, subsample=config.subsample)
model.fit(X_train, y_train)
# 테스트 데이터로 예측 수행
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
# 예측 결과 평가
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy:.0%}")
run.log({"accuracy": accuracy})