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

soyoung an님의 프로필 이미지

작성한 질문수

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

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

4회 기출 작업형2

해결된 질문

24.06.05 21:43 작성

·

118

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

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

2024. 06. 06. 22:21

  1. 검증데이터로 평가지표 점수를 체크하지 않고 바로 test예측 후 제출이 가능하다는 부분을 보여주고자 했어요~!


  2. 아직 원하는 형태로 작업하기 보다 필사(똑같이)로 준비하는 것이 어떨까요?
    기출3만 수치형과 범주형을 나누었고, 나머지는 함께 처리 했어요! 기출 5,6,7에서 진행하는 형태로 쪼개지 않고 처리하는 방법을 연습해주세요 🙂

     

     

     

    더불어 최대한 답변으로 질문에 도움을 드리려고 하나 이런 형태의 질문은
    저도 하나하나 실행하면서 체크를 해야하는 부분이라 답변드리기는 어려움이 있습니다 🥲

     

    눈에 보이는건

    pd.concat([c_train, n_train])에서 axis=1로 설정이 필요해요