강의

멘토링

로드맵

Inflearn brand logo image

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

현우님의 프로필 이미지
현우

작성한 질문수

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

T2-1. 타이타닉(Titanic) Simple Baseline 질문있습니다

작성

·

44

·

수정됨

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')

#print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)

X_train = X_train.drop(['Cabin','Name','Ticket'],axis=1)

X_test = X_test.drop(['Cabin','Name','Ticket'],axis=1)

X_train['Age']=X_train['Age'].loc[X_train['Age']>=1]

X_train['Age']=X_train['Age'].fillna(X_train['Age'].mean())

X_test['Age']=X_test['Age'].loc[X_test['Age']>=1]

X_test['Age']=X_test['Age'].fillna(X_test['Age'].mean())

X_train['Embarked']=X_train['Embarked'].fillna(X_train['Embarked'].mode()[0])

X_test['Embarked']=X_test['Embarked'].fillna(X_test['Embarked'].mode()[0])

cond=pd.get_dummies(X_train['Sex'])

cond2=pd.get_dummies(X_test['Sex'])

X_train['female']=cond.iloc[:,0]

X_train['male']=cond.iloc[:,1]

X_test['female']=cond2.iloc[:,0]

X_test['male']=cond2.iloc[:,1]

X_train = X_train.drop('Sex',axis=1)

X_test = X_test.drop('Sex',axis=1)

from sklearn.preprocessing import LabelEncoder

le=LabelEncoder()

cols=['Embarked']

for col in cols:

le = LabelEncoder()

X_train[col]=le.fit_transform(X_train[col])

X_test[col]=le.transform(X_test[col])

from sklearn.model_selection import train_test_split

X_tr,X_val,y_tr,y_val=train_test_split(X_train,y_train['Survived'],test_size=0.2,random_state=42)

from sklearn.metrics import accuracy_score

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(random_state=42)

model.fit(X_tr,y_tr)

pred = model.predict(X_val)

accuracy_score(y_val,pred)

pred=model.predict(X_test)

submit = pd.DataFrame(

{

'PassengerId' : X_test['PassengerId'],

'Survived' : pred

}

)

submit.to_csv("003000000.csv",index=False)

submit.head()

pd.read_csv("/kaggle/working/003000000.csv")

accuracy_score(y_test['Survived'],submit['Survived'])

 

베이스라인 안보고 혼자 해봤습니다.

이렇게 작성했는데 마지막줄에서 점수는 나오는데 타이타닉 캐글 대회에는 제출이 안되서요 혹시 어느부분이 잘못된건지 알수있을까요??

그리고 이렇게 실행해도 맞는건지도 답변 부탁드립니다

답변 1

0

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

오!! 도전 응원합니다. 💪💪💪

우선 캐글 제출은 파일명이 "submission.csv"이어야 합니다.

만약 그래도 제출이 안되면

submit.shape 와 submit.head() 결과를 보여주세요

현우님의 프로필 이미지
현우
질문자

헤드결과

image.png

shape= 179, 2

 

결과는 이렇구요 ㅠㅠ 타이타닉 컴퍼티션에는 418개의 로우가 필요하다고 해서요.. 혹시몰라서 빅분기놀이터에 올려주신 베이스라인 그대로 해봤는데도 저랑 똑같이 179,2로 나옵니다.

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

아 이해했습니다.

이 데이터는 제가 임의로 변경 코드를 넣어 놨네요

실제 컴피티션에 참여하고 싶다면

https://www.kaggle.com/competitions/titanic
여기서 데이터를 코드를 생성하고 데이터를 불러와 진행 부탁드립니다.

현우님의 프로필 이미지
현우

작성한 질문수

질문하기