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

져니님의 프로필 이미지
져니

작성한 질문수

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

2회 기출유형(작업형2)

이 문제에서 df=pd.concat 으로 X_train과 y_train의 타겟을 합치는 이유가 무엇인가요?

해결된 질문

작성

·

200

0

train이 두개로 나누어져서 제공되서

x_train+y_train['타겟'] 을 합치는거까지는 이해했는데요

이걸 df에 받아서 넣는데

 

그 다음 코드부터는 df를 사용하지를 않더라고요!

그래서 모든 코드 다 작성 후에, df=concat 어쩌구 했던거를 주석처리해서 숨겨봤는데도 같은 결과가 나왔어요.

 

합쳐진 df를 어딘가에 사용한다면 이해가 되는데,

df를 사용하지도 않는데 concat으로 합쳐놓는 이유가 무엇인가요?

 

참고 차 제가 작성했던 코드도 붙여넣어봅니다.

 

import pandas as pd

X_train = pd.read_csv("X_train.csv")

X_test = pd.read_csv("X_test.csv")

y_train = pd.read_csv("y_train.csv")

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

df = pd.concat([X_train, y_train['Reached.on.Time_Y.N']], axis=1)

df

# 라벨인코딩

from sklearn.preprocessing import LabelEncoder

cols = X_train.select_dtypes(include="object").columns

for col in cols :

le = LabelEncoder()

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

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

# # 랜덤 포레스트 위해서 데이터 분리

X_train = X_train.drop("ID", axis=1)

X_test_id = X_test.pop("ID")

# # 데이터 분리

from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(

X_train, y_train['Reached.on.Time_Y.N'], test_size=0.2, random_state=2022

)

# 랜덤포레스트

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(random_state=2022, max_depth=3, n_estimators=200)

rf.fit(X_tr, y_tr)

pred = rf.predict_proba(X_val)

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_val, pred[:,1]))

pred = rf.predict_proba(X_test)

submit = pd.DataFrame({

"ID" : X_test_id,

"Reached.on.Time_Y.N" : pred[:,1]

})

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

pd.read_csv("submit.csv")

 

답변 1

1

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

df = pd.concat([X_train, y_train['Reached.on.Time_Y.N']], axis=1)는 합칠 때 예시로 보여드린 코드입니다.

2개(train, test) 데이터로 만들지 않고

제공된 3개 데이터 그대로 사용해서 풀이했어요 🙂

 

풀이에서 필요한 내용은 아니고 부가 설명으로 생각해주세요

져니님의 프로필 이미지
져니

작성한 질문수

질문하기