해결된 질문
작성
·
96
0
# 시험환경 세팅 (코드 변경 X)
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
def exam_data_load(df, target, id_name="", null_name=""):
if id_name == "":
df = df.reset_index().rename(columns={"index": "id"})
id_name = 'id'
else:
id_name = id_name
if null_name != "":
df[df == null_name] = np.nan
X_train, X_test = train_test_split(df, test_size=0.2, random_state=2021)
y_train = X_train[[id_name, target]]
X_train = X_train.drop(columns=[target])
y_test = X_test[[id_name, target]]
X_test = X_test.drop(columns=[target])
return X_train, X_test, y_train, y_test
df = pd.read_csv("../input/titanic/train.csv")
X_train, X_test, y_train, y_test = exam_data_load(df, target='Survived', id_name='PassengerId')
X_train.shape, X_test.shape, y_train.shape, y_test.shape
#Survived예측
print(X_test.shape)
target=y_train['Survived']
test_id=X_test['PassengerId'].copy()
test=X_test
train=X_train
print(train.shape, test.shape)
train=train.drop('PassengerId', axis=1)
test=test.drop('PassengerId', axis=1)
train=train.drop('Name', axis=1)
test=test.drop('Name', axis=1)
print(train.shape, test.shape)
#합치기
df=pd.concat([train, test])
df['Age']=df['Age'].fillna(df['Age'].mean())
df['Cabin']=df['Cabin'].fillna(df['Cabin'].mode()[0])
df['Embarked']=df['Embarked'].fillna(df['Embarked'].mode()[0])
#인코딩
from sklearn.preprocessing import LabelEncoder
cols=df.select_dtypes(include='O').columns
for col in cols:
le=LabelEncoder()
df[col]=le.fit_transform(df[col])
#쪼개기(712, 179)
train=df[:712]
test=df[712:]
print(train.shape, test.shape)
print(target.shape)
from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val=train_test_split(train, target, test_size=.2, random_state=2022)
from sklearn.ensemble import RandomForestClassifier
rf=RandomForestClassifier(random_state=2022)
rf.fit(x_tr, y_tr)
pred=rf.predict(test)
print(pred)
print(pred.shape)
print(len(test_id))
submit=pd.DataFrame({
'PassengerId': test_id,
'Survived': pred
})
submit.to_csv('수험번호.csv', index=False)
print(submit.shape)
캐글 타이타닉 보고 이렇게 작성해보았는데, 혹시 0점 될만한 요인이 있을까요??ㅠㅠ test데이터 행 수 하고 pred수 하고 동일한거 확인했습니다!
그리고 제출할때는 split로 안쪼개고 바로 fit(train, target)해서 predict(test)해도 되는 부분일까요?
답변 1
0
검증데이터 평가지표로 확인하지 않는다면
x_tr, x_val, y_tr, y_val=train_test_split(train, target, test_size=.2, random_state=2022)
코드가 무의미 합니다. 평가 지표를 확인하려고 사용하는 것이에요~
fit(train, target)해서 predict(test)해도 되는 부분일까요?
네 문제없습니다. 다만 평가 지표 점수를 예상할 수 없어요~
선생님 그러면 train_test_split으로 분리하여 만든 모델을 테스트해서 제출해도 되는거죠?ㅠㅜ0점 처리 나올까봐 너무 불안해서요 죄송합ㄴ디ㅏ