배움 기록/Deep Learning

[sklearn] 데이터 정규화 하는법 (feat. ChatGPT 를 처음 사용하다...)

Spezi 2023. 3. 30. 05:03
반응형

오늘 회사에서 동료들과 얘기를 하다가 내가 일할 때 ChatGPT를 아직 한 번도 안 써봤다고 하자, 문명에 심하게 뒤떨어진 사람 취급을 받았다. 인터넷이 뭔지는 아냐며... 이것들이..

그래서 오늘 한번 ChatGPT를 몇번 사용해 봤는데, 솔직히 기대 이상으로 만족스러운 답변을 얻을 수 있었다. 솔직히 그동안 사용 안 한 이유는 내가 구글링 해서 얻은 답이 더 정확할 것이라고 생각해서였는데 생각보다 얘도 정확한 답을 주더라.. 코드 예시도 들어주면서 ㅎ ㅎ 앞으로 종종 심심할 때 친구처럼(?) 물어봐야지 ㅋㅋㅋㅋㅋㅋ

 


Normalization를 해야하는 이유

본론으로 들어가서 데이터 전처리에 대해 간단히 써볼까 한다.

모델을 학습시키려면 데이터 전처리를 해줘야 한다. 그 이유는 예를 들어 feature가 여러 개가 있는데 한 feature는 0부터 1의 값을 다른 feature는 100000부터 20000000까지의 값을 가진다고 하면 이 다양한 범위의 feature를 학습하면서 발산해버리거나 0으로 수렴해 버려 우리가 얻고자 하는 결과를 얻지 못할 수도 있기 때문이다. 즉! 데이터의 scale이 다름으로써 생기는 문제를 없애고자 필요하다.

 

StandardScaler를 이용해 정규화하는 법

fit()과 transform()의 차이점 및 test data 주의사항

  • fit() 은 train data set에서 transform을 위해 한 설정들 (예: train set의 최대, 최소 값) 등을 학습함
  • transform() 은 학습한 것을 적용함
  • 하지만 test data set에서 fit()을 사용하면 안 됨
    • 우리가 train data에 맞춰서 fit 한 기준들이 test data 에 맞춰서 바뀌어지기 때문
# Normalization
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test) # test data에는 fit 하지 않음

# Train
rf_model = RandomForestRegressor(n_estimators=50, max_features=1.0, random_state=44)
rf_model.fit(X_train_scaled, y_train)

# Prediction
predictions = rf_model.predict(X_test_scaled)

 

 


랜덤포레스트 회귀에서는 sklearn 라이브러리를 이용해 어떻게 정규화를 시키는지 chatGPT에게 물어봤는데, 랜덤포레스트 회귀는 정규화를 필요로 하지 않는다는 것을 알게 되었다. 생각보다 자세한 답변과 코드 적용하는 방법까지 알려주더라..! 

 

오늘 회사에서 내 또래의 동료들과 얘기를 하면서 느낀 점이 몇 가지 있는데, 다들 chatGPT를 유용하게 잘 쓰고 있다는 것. 물론 이 친구들은 요즘 chatGPT를 주제로 연구를 하고 있어서 더더욱 그런 것 일 수도 있지만, 이들이 보기에 우리 분야의 사람들은 앞으로 chatGPT와 같은 서비스의 도움을 받아 일을 할 가능성이 높아 보인다고 했다.

 

두 번째로 다들 일 외에도 딥러닝, CS  분야에 대해 공부하고 있었다. 나는 회사에서 퇴근하는 순간 코딩과 관련된 모든 것을 잊고 취미로도 검색하지 않는데 다들 팟캐스트도 매일 듣고, 이것저것 좋은 책과 영상, 팟캐스트를 추천해 줬음. 그것을 보면서 좀 자극을 받았다!!

 

그동안 같은 팀에 정말 존경하던 동료가 있었는데 이번주를 마지막으로 다른 회사로 옮긴다... 그래서 오늘 찾아가서 이런저런 얘기를 나누었는데 그가 해준 응원과 조언을 생각하며 더 재밌게 공부해야겠다 히히

 

 

 

 

 

 


배움을 기록하기 위한 공간입니다. 

수정이 필요한 내용이나 공유하고 싶은 것이 있다면 언제든 댓글로 남겨주시면 환영입니다 :D

반응형