해결된 질문
작성
·
228
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개 데이터 그대로 사용해서 풀이했어요 🙂
풀이에서 필요한 내용은 아니고 부가 설명으로 생각해주세요