인프런 커뮤니티 질문&답변

한정수님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

이원 분산 분석 🆕 updated 2023.10

유형2번 코드 작성해보았는데...

해결된 질문

24.06.20 14:03 작성

·

82

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

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 20. 17:21

검증데이터 평가지표로 확인하지 않는다면

x_tr, x_val, y_tr, y_val=train_test_split(train, target, test_size=.2, random_state=2022)

코드가 무의미 합니다. 평가 지표를 확인하려고 사용하는 것이에요~

 

fit(train, target)해서 predict(test)해도 되는 부분일까요?

네 문제없습니다. 다만 평가 지표 점수를 예상할 수 없어요~

한정수님의 프로필 이미지
한정수
질문자

2024. 06. 20. 17:44

선생님 그러면 train_test_split으로 분리하여 만든 모델을 테스트해서 제출해도 되는거죠?ㅠㅜ0점 처리 나올까봐 너무 불안해서요 죄송합ㄴ디ㅏ