작성
·
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() 결과를 보여주세요
아 이해했습니다.
이 데이터는 제가 임의로 변경 코드를 넣어 놨네요
실제 컴피티션에 참여하고 싶다면
https://www.kaggle.com/competitions/titanic
여기서 데이터를 코드를 생성하고 데이터를 불러와 진행 부탁드립니다.
헤드결과
shape= 179, 2
결과는 이렇구요 ㅠㅠ 타이타닉 컴퍼티션에는 418개의 로우가 필요하다고 해서요.. 혹시몰라서 빅분기놀이터에 올려주신 베이스라인 그대로 해봤는데도 저랑 똑같이 179,2로 나옵니다.