해결된 질문
작성
·
127
0
왜 어떨때는 이렇게 쓰고
rf.fit(x_tr, y_tr)
pred_val = rf.predict(x_val)
rf.fit(train, target)
pred = rf.predict(test)
풀이영상에서는 바로 트레인, 타겟이라고 적는지 궁금합니다!
추가로, 아래 코드에서 수치형 변수->스케일링, 범주형 변수 -> 인코딩을 진행하고 싶은데
주석처리한 코드 부분을 어떻게 수정하면 될까요??
# your code
# 라이브러리 불러오기
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
# EDA
train.shape, test.shape # ((6665, 11), (2154, 10))
train.isnull().sum()
test.isnull().sum()
# train.info()
# test.info()
# 전처리(타겟, 결측치, 인코딩, 스케일링)
train = train.drop("ID", axis = 1)
test_ID = test.pop("ID")
target = train.pop("Segmentation")
# train.head()
# test.head()
# c_train = train[["Gender", "Ever_Married", "Graduated", "Profession", "Spending_Score", "Var_1"]]
# c_test = test[["Gender", "Ever_Married", "Graduated", "Profession", "Spending_Score", "Var_1"]]
# c_train = pd.get_dummies(c_train)
# c_test = pd.get_dummies(c_test)
train = pd.get_dummies(train)
test = pd.get_dummies(test)
# n_train = train[["Age", "Work_Experience", "Family_Size"]]
# n_test = test[["Age", "Work_Experience", "Family_Size"]]
# from sklearn.preprocessing import StandardScaler
# scaler = StandardScaler()
# n_train = scaler.fit_transform(n_train)
# n_test = scaler.fit(n_test)
# train = pd.concat([c_train, n_train])
# test = pd.concat([c_test, n_test])
# train.info()
# test.info()
# 모델링(학습)
from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val = train_test_split(train, target, test_size = 0.2, random_state = 40)
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier()
rf.fit(x_tr, y_tr)
pred_val = rf.predict(x_val)
# 평가 Macro f1-score
from sklearn.metrics import f1_score
f1 = f1_score(y_val, pred_val, average = "macro")
pred_test = rf.predict(test)
# 제출(데이터프레임, pdf, index = False)
result = pd.DataFrame({
"ID" : test_ID ,
"Segmentation" : pred_test
})
result.to_csv("수험번호.csv", index = False)
답변 1
0
검증데이터로 평가지표 점수를 체크하지 않고 바로 test예측 후 제출이 가능하다는 부분을 보여주고자 했어요~!
아직 원하는 형태로 작업하기 보다 필사(똑같이)로 준비하는 것이 어떨까요?
기출3만 수치형과 범주형을 나누었고, 나머지는 함께 처리 했어요! 기출 5,6,7에서 진행하는 형태로 쪼개지 않고 처리하는 방법을 연습해주세요 🙂
더불어 최대한 답변으로 질문에 도움을 드리려고 하나 이런 형태의 질문은
저도 하나하나 실행하면서 체크를 해야하는 부분이라 답변드리기는 어려움이 있습니다 🥲
눈에 보이는건
pd.concat([c_train, n_train])에서 axis=1로 설정이 필요해요