inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

빅이시 작업형2 기초 - 케이스 1~3 관련 문의

해결된 질문

65

초코

작성한 질문수 4

0

안녕하세요. 빅이시 강의 수강 및 코드 관련 문의 드립니다.


'추천' 파트와 달리 '기초'에는 랜덤 포레스트 모델로(만) 예측하는 코드가 구현되어 있음을 확인했습니다.

기초 케이스에도 LightGBM으로도 예측하는 코드를 추가 가능하실까요?


추천(1~3) 코드에서 LightGBM 부분을 추출하여 기초 코드를

'# 2_1. 머신러닝 학습 및 예측(랜덤포레스트)'

'# 2_2. 머신러닝 학습 및 예측(LightGBM)'

'# 3_1. 결과 파일 생성(랜덤포레스트)'

'# 3_2. 결과 파일 생성(LightGBM)'

이렇게 코드를 자체적으로 이식(?)하고 이원화하여 수정해보려고 했는데 재대로 한 게 맞는지 확신이 없어 문의드립니다ㅠㅜ

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

답변 6

0

초코

'기초 1'은 전체적으로 코드를 나열해 보았고, '기초2', '기초 3'은 #2_1, #2_2 & #3_1, #3_2 부분만(나머지 '기초 1'과 동일=>생략) 작성해 보았습니다. 주요 변경내용은 아래과 같습니다.

1. LightGBM 모델의 경우 #1 단계에서 특수문자 제거 코드 추가

2. #2 및 #3에서 model_rf, model_lg & p_rf, p_lg 로 변수명을 이원화(구분)


나름 맞게 추려낸 것 같지만 혹시 누락되거나 보완할 부분이 있는지 피드백을 요청 드립니다.

(기존의 주석은 가독성 편의 상 필요한 부분만 남겼습니다.)

감사합니다.

0

초코

[기초] 케이스3. 회귀, 모든 평가지표

* 변경사항 : 변수명 - model에서 model_rf, model_lg / p에서 p_rf, p_lg


# 2_1. 머신러닝 학습 및 예측 (랜덤포레스트)
from sklearn.ensemble import RandomForestRegressor
model_rf = RandomForestRegressor()
model_rf.fit(train, target)
p_rf = model_rf.predict(test)

# 2_2. 머신러닝 학습 및 예측 (LightGBM)
import lightgbm as lgb
model_lg = lgb.LGBMRegressor(random_state=0, verbose=-1)
model_lg.fit(train, target)
p_lg = model_lg.predict(test)

# 3_1. 결과 파일 생성 (랜덤포레스트)
submit = pd.DataFrame({'pred': p_rf})
submit.to_csv("result.csv", index=False)     # 파일 생성

# 3_2. 결과 파일 생성 (LightGBM)
submit = pd.DataFrame({'pred': p_lg})
submit.to_csv("result.csv", index=False)     # 파일 생성 (※ 제출은 1개, 위 3_1과 택1)

0

초코

[기초] 케이스2. 이진/다중 분류, ROC-AUC를 제외한 모든 평가지표(f1, accuracy 등)

* 변경사항 : 변수명 - model에서 model_rf, model_lg / p에서 p_rf, p_lg


# 2_1. 머신러닝 학습 및 예측 (랜덤포레스트)
from sklearn.ensemble import RandomForestClassifier
model_rf = RandomForestClassifier()
model_rf.fit(train, target)
p_rf = model_rf.predict(test)

# 2_2. 머신러닝 학습 및 예측 (LightGBM)
import lightgbm as lgb
model_lg = lgb.LGBMClassifier(random_state=0, verbose=-1)
model_lg.fit(train, target)
p_lg = model_lg.predict(test)

# 3_1. 결과 파일 생성 (랜덤포레스트)
submit = pd.DataFrame({'pred': p_rf})
submit.to_csv("result.csv", index=False)     # 파일 생성

# 3_2. 결과 파일 생성 (LightGBM)
submit = pd.DataFrame({'pred': p_lg})
submit.to_csv("result.csv", index=False)     # 파일 생성 (※ 제출은 1개, 위 3_1과 택1)



0

초코

[기초] 케이스1. 이진 분류, ROC-AUC


<기존 코드>
# 1. 데이터 전처리 (랜덤포레스트 / LightGBM 공통)
target = train.pop('TravelInsurance')
train = pd.get_dummies(train)
test = pd.get_dummies(test)

<추가 코드> ## 랜덤 포레스트 모델 선택 시 미 사용
# (LightGBM용) 컬럼명 특수문자 제거 : / 공백 등 → LightGBM 에러 방지
train.columns = train.columns.str.replace(r'[^A-Za-z0-9_가-힣]', '', regex=True)
test.columns = test.columns.str.replace(r'[^A-Za-z0-9_가-힣]', '', regex=True)

<수정 코드> ## 변수명 변경(model > model_rf, p > p_rf)
# 2_1. 머신러닝 학습 및 예측 (랜덤포레스트)
from sklearn.ensemble import RandomForestClassifier
model_rf = RandomForestClassifier()
model_rf.fit(train, target)
p_rf = model_rf.predict_proba(test) # (ROC-AUC는 확률값)

<추가 코드> ## 변수명(model_lg, p_lg)로 이원화하여 구분이 용이하게 함.) 
# 2_2. 머신러닝 학습 및 예측 (LightGBM)
import lightgbm as lgb
model_lg = lgb.LGBMClassifier(random_state=0, verbose=-1)
model_lg.fit(train, target)
p_lg = model_lg.predict_proba(test) # (ROC-AUC는 확률값)

<수정 코드> ## 변수명 변경(model > model_rf, p > p_rf)
# 3_1. 결과 파일 생성 (랜덤포레스트)
submit = pd.DataFrame({'pred': p_rf[:, 1]})
submit.to_csv("result.csv", index=False)      # 파일 생성

<추가 코드> ## 변수명(model_lg, p_lg)로 이원화하여 구분이 용이하게 함.)
# 3_2. 결과 파일 생성 (LightGBM)
submit = pd.DataFrame({'pred': p_lg[:, 1]})
submit.to_csv("result.csv", index=False)      # 파일 생성 (※ 제출은 1개, 위 3_1과 택1)

<기존 코드>
# 체크 (샘플과 비슷한지 확인)
print(submit.head())



0

퇴근후딴짓

잘하고 계십니다. !!!

랜덤포레스트에 random_state=0 추가해서 시드값 고정하는 것이 좋습니다.


다만 검증 데이터를 분리해 검증하지 않는다면

랜덤포레스트와 라이트지비엠 둘다 학습 및 예측할 필요가 없습니다.

예측하더라도 비교할 수 없기 때문이에요!

검증하지 않을 것이라면 바로 라이트지비엠만 추천드리고


검증한다면 데이터 분리하고 검증 단계가 필요합니다.


0

초코

시간관계 상 검증[추천] 생략하고 [기초]로 진행하고자 합니다.

직전 회차에서 랜.포 모델로 했을때 30점이 나와 이번에는 보다 정확도가 높은 LightGBM 모델로 진행 예정입니다.

감사합니다.

0

퇴근후딴짓

혹시 시도한게 있다면 보여주시겠어요?

0

인프런 AI 인턴

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

빅데이터 분석기사 실기 강의에서 LightGBM을 사용한 예측 코드 추가에 대한 질문 감사드립니다!

LightGBM은 랜덤 포레스트와 함께 사용될 수 있는 강력한 머신러닝 모델입니다. 기초 케이스에 LightGBM을 추가하고자 하는 취지에 대해 도움이 될 수 있도록 간단한 설명을 드리겠습니다.

  1. LightGBM의 도입:

    • 기초 케이스에 LightGBM 모델을 추가하고자 하시는 계획은 매우 좋습니다. LightGBM은 높은 예측 성능과 빠른 학습 속도를 자랑하기 때문에, 다양한 데이터셋에서 랜덤포레스트와 함께 사용하여 비교 분석을 통해 성능을 최적화할 수 있습니다.
  2. 코드 이식 방법:

    • ’# 2_1. 머신러닝 학습 및 예측(랜덤포레스트)’ 부분 코드를 참고하여, 아래와 같은 형식으로 LightGBM 코드를 추가하시면 됩니다:
      ”`python
      from lightgbm import LGBMClassifier, LGBMRegressor

    model_lgb = LGBMClassifier() if is_classification else LGBMRegressor()
    model_lgb.fit(X_train, y_train)
    y_pred_lgb = model_lgb.predict(X_test)
    “`

  3. 결과 파일 생성:

    • 결과 파일 생성 부분에서도 ‘# 3_2. 결과 파일 생성(LightGBM)‘으로 확장하여 랜덤 포레스트 예측 결과와 함께 저장하시면, 비교 분석에 유리합니다.
  4. 검증:

    • 코드는 잘 작성된 것 같습니다만, 모델이 잘 학습되었는지 성능 평가를 통해 확인해보시길 추천합니다. 학습 후 평가 지표(예: 분류 문제의 경우 정확도, 회귀 문제의 경우 RMSE)를 확인하세요.

아래 링크에서 유사한 질문과 답변을 확인하실 수 있습니다. 이 답변들을 참고하시면 더욱 도움이 될 것입니다:

LightGBM을 적절히 적용하여 좋은 결과를 얻으시길 바랍니다! 추가적으로 궁금한 점이 있으시면 더 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

수강연장요청 문의

0

17

1

아무래도 다음 시험 연장은 어렵겠죠?

0

60

2

빅분기 12회 결과 관련 문의

0

79

1

책이랑 강의랑 순서나 예제가 다른것 같네요

0

65

2

수강연장 문의

0

71

2

재검토 요청 방법 좀 알려주셔요...-.-;;

0

93

2

12회 실기 질문(작업형 2)

0

79

2

뒤로가기 버튼 같은 것이 있나요?

0

53

1

강의 연장 문의

0

79

2

출력값 질문

0

58

2

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

0

49

1

실기시험 제출관련

0

212

3

6.20 작업형 2 과적합

0

209

3

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

0

71

2

로지스틱회귀, 회귀

0

60

2

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

0

68

1

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

0

78

2

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

0

77

1

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

0

67

2

3번문제 등분산 가정

0

59

2

작업형3 target 형 변환 질문

0

48

2

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

0

65

3

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

0

70

2

제2유형 질문입니다.

0

58

2