인프런 커뮤니티 질문&답변
코드 제출 질문
해결된 질문
작성
·
25
0
1.코드를 이렇게 작성했는데 시험환경에서 이 상태로 바꿀것 없이 그냥 제출 버튼 누르면 되는건가요?
2.원핫인코딩 진행시 데이터가 10,000개가 넘어가서 45초정도 걸리는데
레이블인코딩을 진행할시 코드는 df로 concat하고 그대로 레이블인코딩 진행 후 다시 나누어 주면 되나요?
import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p2/flight_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p2/flight_test.csv")
# print(train.info())
target = train.pop('price')
# print(train.shape, test.shape)
df = pd.concat([train,test])
df = pd.get_dummies(df)
train = df.iloc[:10505,:]
test = df.iloc[10505:,:]
# print(train.shape, test.shape)
# 라벨인코더
# from sklearn.preprocessing import LabelEncoder
# cols = train.select_dtypes(include = 'object')
# for col in cols:
# le = LabelEncoder()
# train[col] = le.fit_transform(train[col])
# test[col] = le.transform(test[col])
# 데이터 분리
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=0)
# 랜덤포레스트
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state = 0)
rf.fit(X_tr, y_tr)
pred = rf.predict(X_val)
# # LightGBM
# import lightgbm as lgb
# lg = lgb.LGBMRegressor(random_state = 0, verbose=-1)
# lg.fit(X_tr,y_tr)
# pred = lg.predict(X_val)
#평가지표 RMSE
from sklearn.metrics import root_mean_squared_error
rmse = root_mean_squared_error(y_val, pred)
# print(rmse)
# 원핫 + 랜포 = 3779.676969452687 선택
# 원핫 + LGB = 4216.406340322749
pred_final = rf.predict(test)
# 제출
submit = pd.DataFrame({'pred':pred_final})
submit.to_csv('result.csv',index=False)
pd.read_csv('result.csv')답변 1
1
퇴근후딴짓
지식공유자
네 완벽합니다.
시험 데이터는 좀 더 작은 사이즈일거에요
레이블 인코딩을 합친다면 코드가 살짝 수정이 필요합니다. 예를들면 아래와 같습니다.
for col in cols: le = LabelEncoder() df[col] = le.fit_transform(df[col])





