강의

멘토링

로드맵

Inflearn brand logo image

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

eovnfjfpa님의 프로필 이미지
eovnfjfpa

작성한 질문수

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

예시문제 작업형2(ver. 2025) 🆕

질문있습니다!

작성

·

33

0

# 출력을 원하실 경우 print() 함수 활용

# 예시) print(df.head())

# getcwd(), chdir() 등 작업 폴더 설정 불필요

# 파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가

import pandas as pd

train = pd.read_csv("data/customer_train.csv")

test = pd.read_csv("data/customer_test.csv")

#총 구매금액 , rmse

target = train.pop("총구매액")

#수치형 변수 스케일링

cols = train.select_dtypes(exclude = 'object').columns

from sklearn.preprocessing import MinMaxScaler

mx = MinMaxScaler()

train[cols] = mx.fit_transform(train[cols])

test[cols] = mx.transform(test[cols])

ob = train.select_dtypes(include = 'object').columns

from sklearn.preprocessing import LabelEncoder

for col in ob:

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)

import lightgbm as lg

model = lg.LGBMRegressor(random_state = 0)

model.fit(x_tr,y_tr)

pred = model.predict(x_val)

from sklearn.metrics import root_mean_squared_error

r = root_mean_squared_error(y_val,pred)

pred = model.predict(test)

s = pd.DataFrame({"pred" : pred})

s.to_csv("result.csv", index= False)

df = pd.read_csv("result.csv")

#758.1836860967057

800정도가 나온다고 하던데 758이 나온거면 모델 성능이 더 좋다고 하는건데 이게 이상일수도 있을까요? 750점 대가 나오니까 불안하네요 ,, 추가로 이렇게 pd.read_csv로 확인했을때 제대로 나오면 그냥 제출하면 되는거죠??

답변 2

0

안녕하세요, 인프런 AI 인턴입니다. eovnfjfpa님.

작성하신 코드는 pandas를 이용하여 데이터를 전처리하고 LightGBM 모델을 학습하여 결과를 예측하는 구조로 구성되었습니다. 주어진 코드는 크게 문제없이 잘 작성된 것으로 보이며, 특히 MinMaxScalerLabelEncoder를 활용한 전처리 과정도 적절하게 이루어진 것 같습니다.

코드 핵심 포인트:

  1. 데이터 전처리:

    • 수치형 데이터는 MinMaxScaler로 스케일링을 하셨고, 범주형 데이터는 LabelEncoder로 변환하셨습니다.
    • 이러한 전처리는 모델의 입력 데이터가 적절히 준비되도록 도와줍니다.
  2. 모델 학습 및 평가:

    • LightGBM 라이브러리를 사용하여 회귀 모델을 학습하셨고, root_mean_squared_error(RMSE)을 통해 성능 평가를 수행하셨습니다.
    • 모델 예측 결과를 파일로 저장하고 이를 pandas로 로드해서 확인하시는 부분도 잘 처리하셨습니다.

질문에 대한 답변:

  • RMSE 점수가 758로 나타난 것은 다른 참고 수치(800)와 비교해 상대적으로 낮아, 더 좋은 성능을 의미할 수 있습니다. 이는 정상입니다. RMSE의 값은 낮을수록 모델의 예측이 실제 값에 가까움을 나타내기 때문에 성능이 더 좋다고 판단할 수 있습니다.

  • pd.read_csv()로 저장된 CSV 파일을 읽고 원하는 형식대로 출력이 맞다면 이렇게 나온 결과를 제출하시면 됩니다. CSV 파일을 제대로 저장했다는 것을 의미합니다.

다른 학습자들이 유사한 상황에서 쉽게 이해할 수 있도록 상대적으로 낮은 RMSE 값이 어떤 상황에서 좋은 지표일 수 있는지도 추가적으로 고려해 보시는 것도 좋을 것 같습니다.

유사한 해결책을 제공하는 답변 링크:
- 5회 기출유형 (작업형2) 강의 코드 질문: 데이터 전처리 및 모델 평가 관련 질문.
- 4회 작업형 2번 풀이 질문있습니다.: 모델 성능 평가 및 데이터 전처리에 대한 다른 질문들과 답변이 포함되어 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

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

네, 저는 일부러 랜덤포레스트만 사용해봤어요🙂
제가 한 것보다 결과가 안좋게 나오면 보통 불안해하셔서요.
결과가 잘 나온 편이라 전혀 문제 없습니다!

 

응원합니다 🔥🔥🔥

eovnfjfpa님의 프로필 이미지
eovnfjfpa

작성한 질문수

질문하기