inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

회귀 prediction 관련 데이터 크기 오류 질문

해결된 질문

234

SEO

작성한 질문수 16

0

안녕하세요, 5회 작업형을 풀면서 궁금한게 생겨 질문 드립니다.

from sklearn.model_selection import train_test_split
X_tr,X_val,y_tr,y_val = train_test_split(train,y,test_size = 0.1,random_state= 2022)
#modeling # randomForestRegressor, XGBRegressor
from sklearn.ensemble import RandomForestRegressor
#RandomForest
model = RandomForestRegressor()
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
print("rmse:", (mean_squared_error(y_val,pred))**0.5)

이 과정에서는 문제가 생기지 않습니다. X_tr, y_tr 그리고 X_val로 만들어진 pred, y_val의 크기가 각각 일치하기 때문인데 제출을 위해


pred = model.predict(test)
print("rmse:", (mean_squared_error(y,pred))**0.5) # y는 test data에서 pop한 타겟(=price)

이걸 돌리면 사이즈가 맞지 않아 rmse가 나오지 않는다고 합니다. 그도 당연한게 test = pred 는 애초에 train데이터보다 숫자가 훨씩 적은 상태고, y는 train데이터에서 와서 데이터 개수가 훨씬 크기 때문인데요.

전에 똑같은걸 풀어서 그 때는 어떻게 해결했나 보니 y데이터를 따로 주셨더라구요 그건 test data와 크기가 같았고요.

근데 https://www.kaggle.com/competitions/big-data-analytics-certification-kr-2023-5th/data

여기에는 y데이터 값이 존재하지 않는데 이런..경우는 어떻게 해결하나요??

 

정리하자면, pred의 데이터 사이즈와, 타겟의 데이터 사이즈의 불균형으로인한 rmse 오류를 어떻게 해결하는지 궁금합니다!

 

 

 

#get dummies 
train_c = pd.get_dummies(train[cols_c],dtype=int) #cols_c는 범주형 데이터 columns list
test_c = pd.get_dummies(test[cols_c],dtype=int)
#concat
train = pd.concat([train,train_c],axis = 1)
test = pd.concat([test,test_c],axis = 1)
train = train.drop('transmission',axis =1 )
test = test.drop('transmission',axis =1)
train = train.drop('fuelType',axis =1 )
test = test.drop('fuelType',axis =1)

제가 get_dummies를 활용해서 one-hot 인코딩을 했는데요,

train[cols_c] = pd.get_dummies(train[cols_c],dtype=int) 이것도.. 사실 새로운 컬럼들이 만들어지는거라 안된다는 판단하에, 아예 새로운 변수에다가 저장해서 원래 데이터에 추가를 했습니다.

저는 회귀를 돌리기 위해 (그리고 원핫인코딩을 한 이유도) 범주형 데이터는 없애야 되잖아요? 그래서 train, test데이터 각각에서 기존 train[col_c]에 해당하는 애들이 없어졌으면 좋겠는데

이런 상황에서 위와 같이 .. 주먹구구식으로 하나씩 안 빼고 한번에 (one-hot 인코딩 + 싹 합치는) ..방법이 있나요???

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 1

1

퇴근후딴짓

1

우선, 아래 코드와 같이 test데이터의 결과를 확인할 수 없습니다. (제공되지 않는 데이터입니다.)

시험에서는 수험생이 나눈 임의의 val로 확인해볼 수 있는 것입니다.

pred = model.predict(test)
print("rmse:", (mean_squared_error(y,pred))**0.5) # y는 test data에서 pop한 타겟(=price)

 

2

아래와 같이 진행하면 범주형 변수만 인코딩해서 저장합니다.💪

train = pd.get_dummies(train)

 

 

 

출력값 질문

0

11

1

수업노트가 어디에 있나요?

0

21

1

실기시험 제출관련

0

153

2

6.20 작업형 2 과적합

0

158

3

코딩팡 장업형2 베이스 라인 인코딩 종류 질문

0

49

2

로지스틱회귀, 회귀

0

48

2

회귀 문제를 풀때 질문입니다.

0

55

1

불균형 처리 후 성능이 더 낮아졌다면,

0

61

2

실기 체험 제2유형 에러 문의

0

61

1

LIGHTGBM 으로 하면 pred값이 소수점 6자리까지 나오는게 맞나요

0

50

2

3번문제 등분산 가정

0

48

2

작업형3 target 형 변환 질문

0

35

2

[작업형1] 연습문제 섹션1 ~ 10 의 section4

0

36

3

원핫인코딩과 레이블 인코딩에서 concat

0

59

2

제2유형 질문입니다.

0

46

2

C()

0

44

2

작업형 2에서 strafity 적용 유무

0

52

2

수강 기간 연장 가능 여부 문의드립니다.

0

61

1

ols

0

43

2

2유형 작성관련 질문(일반 심화)

0

39

2

2유형 작성관련 질문

0

41

2

2유형 object컬럼 개수 다르면

0

48

2

코딩팡질문이요ㅠㅠ

0

45

2

관찰값과 기대값의 개념이 헷갈립니다.

0

25

2