해결된 질문
작성
·
101
0
아래 코드에서 잘못된 부분은 없는지, 어느 부분을 보완하면 좋을지 알고 싶습니다
문제 : 학습용 데이터 (X_train, y_train)을 이용하여 생존 예측 모형을 만든 후, 이를 평가용 데이터(X_test)에 적용하여 얻은 예측값을 다음과 같은 형식의 CSV파일로 생성하시오(제출한 모델의 성능은 accuracy 평가지표에 따라 채점)
코드 :
# 라이브러리 불러오기
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
# EDA
train.shape, test.shape # ((891, 12), (418, 11))
train.isnull().sum()
test.isnull().sum()
# 전처리(결측치, 인코딩, 스케일링, 타겟)
train = train.dropna()
test = test.dropna()
train.shape, test.shape # ((183, 12), (87, 11))
train.describe()
train = pd.get_dummies(train)
test = pd.get_dummies(test)
target = train.pop("Survived")
# 모델링
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size = 0.2, random_state = 2024)
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(random_state = 2024)
rf.fit(X_tr, y_tr)
pred = rf.predict(X_val)
# 평가
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_val, pred)
# 제출
result = pd.DataFrame({
"PassengerId" : X_val["PassengerId"] ,
"Survived" : pred
})
result.to_csv("수험번호.csv", index = False)
답변 1
1
엄청난 실수를 했어요! 0점처리 됩니다.
1
문제가 418개의 예측입니다.
테스트 데이터 (418, 11) -> 행이 418개였으면
이대로 유지해야 합니다. 87개로 줄이면 채점이 불가능하므로 0점 처리됩니다.
절대로 test 데이터 행 수는 건들면 안 됩니다.
트레인 데이터 수가 800개에서 100단위로 떨어졌어요
이렇게 되면 너무 많은 데이터가 삭제되어 학습이 제대로 이루어지지 않을 수 있어요!
결칙치를 채워서라도 살릴 수 있는 부분은 살리는 것이 좋을 것 같아요!