해결된 질문
작성
·
147
0
기출 6 작업형 2
import pandas as pd
train = pd.read_csv("energy_train.csv")
test = pd.read_csv("energy_test.csv")
# train.shape,test.shape
# print(train.head())
# print(test.head())
# print(train.isnull().sum())
# print(test.isnull().sum())
target = train.pop('Heat_Load')
# print(train.describe(include='object'))
train = pd.get_dummies(train)
test = pd.get_dummies(test)
# train.head()
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=2023)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state=2023)
model.fit(X_tr,y_tr)
pred = model.predict(X_val)
# pred
from sklearn.metrics import f1_score
print(f1_score(y_val,pred,average='macro'))
pred = model.predict(test)
pd.DataFrame({'pred':pred}).to_csv("result.csv",index=False)
pd.read_csv("result.csv")
최근 인코딩 영상을 봤는데 범주형 인코딩 과정에서 train과 test unique 값이 같은지 다 비교해본 후에 진행해야 되나요? 지금은 nunique 값이 동일하면 바로 원핫인코딩이나 라벨인코딩 사용하고 있습니다. 만약 다른 값이 들어가 있으면 인코딩 할 때 오류가 발생하나요?
randomforest만 이용해서 분류일 때랑 회귀일 때 나눠서 풀고 있는데 위의 코드처럼 작성하면 문제되는 점은 없을까요?
randomforest에서 분류든 회귀든 max_depth와 n_estimators를 추가해서 검증 값이 높게 나오는 정도만 하면 될까요?
답변 1
0
1
카테고리 수가 같지만 실제로 값이 다르면 원핫인코딩에서는 문제가 없고 모델을 학습할 때 컬럼명이 달라 에러가 발생할거에요.
레이블 인코딩은 train이 test를 포함한다면 문제가 없을 것 같고, 아니라면 인코딩 과정에서 에러가 발생합니다.
혹시 모르니 시험에서는 비교하고 진행하는 것을 추천합니다.
2
네, 기출 6을 기준으로 큰 문제 없어 보입니다.
3
네, 튜닝은 여유가 있다면 권장드립니다. 튜닝해도 크게 올라가지 않는다면 무리 하지 말고 튜닝 없이 제출해주세요