inflearn logo
강의

講義

知識共有

[2026年ビッグデータ分析実技準備] ビッグデータ分析実技試験100%合格!過去問のパターンが見える!

第9回実技型1番問題1

인코딩 질문!!

解決済みの質問

72

dbk345727

投稿した質問数 10

0

훈련 세트에서 보지 못한 카테고리를 테스트 세트에서 발견하여 아래와 같은 오류가 떴는데

ValueError: Found unknown categories ['XXX'] in column 1 during transform

이러한 경우 test에 해당 값을 다른 값으로 대체하거나 삭제 하는게 좋을까요?

시험이 얼마 안남아 궁금한게 많네요

ㅜㅜ

 

 

빅데이터 빅데이터분석기사

回答 1

0

codingkorea

네 이 에러는 훈련시에는 없었던 새로운 카테고리가 테스트 할때 포함되서 나오는 오류 입니다. 이 에러가 나면 훈련시 컬럼과 테스트 컬럼을 비교해보셔야합니다. 아마도 문자를 숫자로 변환하는 과정에서 훈련과 테스트간에 데이터 불일치가 있어보입니다. 전체 코드가 어떻게 되죠?

0

dbk345727

강사님 강의 기출문제는 모두 풀고 연습을 하여 다른 교재를 사서 풀이하던중에 오류가 나서 질문을 드렸는데 실례가 안되면 답변 주시면 많은 도움 될 것 같습니다.,,ㅜㅜ

아래 문제입니다

#훈련 데이터로 학습한 모델을 테스트 데이터에 적용하여 예측한 결과를 제출하시오.(분류 예측값 제출)
#※ 제출 형식은 ID, pred 두 칼럼만 존재해야 한다.(평가 지표: macro f1-score)

import pandas as pd
train = pd.read_csv('https://raw.githubusercontent.com/YoungjinBD/data/main/exam/7_2_train.csv')
test = pd.read_csv('https://raw.githubusercontent.com/YoungjinBD/data/main/exam/7_2_test.csv')

1

codingkorea

네 ~ 아래와 같이 모델을 만들어보았습니다.

훈련데이터에 unknown 을 포함시키면 해결되는데요.

실제 시험때 이렇게 나오면 아마 많은 수강생들이 못풀거라서 이렇게 문제가 나오지는

않을것 같습니다.

 

import pandas as pd

from sklearn.ensemble import RandomForestClassifier, VotingClassifier

from sklearn.linear_model import LogisticRegression

from sklearn.preprocessing import LabelEncoder, StandardScaler

from sklearn.model_selection import train_test_split

from sklearn.metrics import f1_score

# 데이터 로드

train = pd.read_csv('https://raw.githubusercontent.com/YoungjinBD/data/main/exam/7_2_train.csv')

test = pd.read_csv('https://raw.githubusercontent.com/YoungjinBD/data/main/exam/7_2_test.csv')

# 데이터 분리

X_train = train.drop(['ID', 'Target'], axis=1)

y_train = train['Target']

X_test = test.drop(['ID', 'Target'], axis=1)

# 카테고리 변수 처리

for col in X_train.select_dtypes(include='object').columns:

train_values = set(X_train[col])

X_test[col] = X_test[col].apply(lambda x: 'UNKNOWN' if x not in train_values else x)

le = LabelEncoder()

le.fit(list(X_train[col]) + ['UNKNOWN'])

X_train[col] = le.transform(X_train[col])

X_test[col] = le.transform(X_test[col])

# 피처 엔지니어링 (성적 비율)

if 'Curricular units 1st sem (approved)' in X_train.columns:

X_train['approval_rate'] = X_train['Curricular units 1st sem (approved)'] / (X_train['Curricular units 1st sem (enrolled)'] + 1)

X_test['approval_rate'] = X_test['Curricular units 1st sem (approved)'] / (X_test['Curricular units 1st sem (enrolled)'] + 1)

# 결측치 처리 및 스케일링

X_train = X_train.fillna(X_train.median())

X_test = X_test.fillna(X_train.median())

scaler = StandardScaler()

X_train = scaler.fit_transform(X_train)

X_test = scaler.transform(X_test)

# 앙상블 모델 (성능 UP!)

rf = RandomForestClassifier(n_estimators=100, class_weight='balanced', random_state=42)

lr = LogisticRegression(class_weight='balanced', random_state=42)

ensemble = VotingClassifier([('rf', rf), ('lr', lr)], voting='soft')

# 성능 확인

X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)

ensemble.fit(X_tr, y_tr)

val_pred = ensemble.predict(X_val)

print(f"검증 Macro F1-score: {f1_score(y_val, val_pred, average='macro'):.4f}")

# 전체 학습 및 예측

ensemble.fit(X_train, y_train)

pred = ensemble.predict(X_test)

# 제출 파일

result = pd.DataFrame({'ID': test['ID'], 'pred': pred})

result.to_csv('submission.csv', index=False)

print("완료!")

수강 기한 연장 문의

0

74

4

코랩 기본 사용법 문의

0

63

1

8회 작업형1 문제2

0

59

2

4회 2유형 1번 문제

0

48

1

다중 선형 회귀 상수항 추가 관련 질문

0

88

2

10회 작업형1번문제2번 문제 풀이 틀림

0

74

2

8회 1유형 1번 문제

0

73

1

답변 항상 감사드립니다. 질문 있습니다.

0

68

2

원핫인코딩 이후 칼럼 불일치 문제

0

66

2

6회 1유형 3번 문제

0

63

1

코딩 방법에 따른 채점 기준에 관하여 질문있습니다.

0

77

1

데이터 파일들은 어디서 다운받을 수 있나요?

0

79

2

선형회귀분석 질문

0

47

2

링크가안보여요 어디에올라와있는거죠대체 ? 구글코랩파일이요

0

82

4

범주형 인코딩

0

83

2

원핫인코딩시 라벨링질문

0

78

1

유형2 질문!!

0

58

2

6회 작업형 2 문제 1

0

61

1

작업형 유형 2에서,,, train, test, split 시 성능

0

122

2

항상 모델학습하실때 train_test_split일부러 안하시는 이유가 있는건가요?

0

94

2

Label Encoding 관련 질문

0

100

3

상수항 질문드립니다. (6회 작업형 2문제)

0

50

1

2유형 답안 제출 시 문의

0

59

1

help, dir 사용법

0

93

2