함수에 대해 정의내릴 때
예를 들어
코랩 에서는
scaler = minmax_scale() 이렇게 정의를 내리고
scaler(data) 하는데
#코랩은 정의내릴 때 괄호를 빼면 동작안함
구름에서 테스트해보니까
scaler = minmax_scale()하고
scaler(data)하면 에러가 발생하고
괄호없이 scaler = minmax_scale 만해야 에러가 발생하지 않더라구요.
이게 구름 환경만의 특성이라서 그렇다고 보면 될까요?
함수에 대해 정의내릴 때
예를 들어
코랩 에서는
scaler = minmax_scale() 이렇게 정의를 내리고
scaler(data) 하는데
#코랩은 정의내릴 때 괄호를 빼면 동작안함
구름에서 테스트해보니까
scaler = minmax_scale()하고
scaler(data)하면 에러가 발생하고
괄호없이 scaler = minmax_scale 만해야 에러가 발생하지 않더라구요.
이게 구름 환경만의 특성이라서 그렇다고 보면 될까요?
안녕하세요! 구름이 라이브러리를 만드는 것은 아니라 동일할 것으로 예상해요!
라이브러리 호출이 어떻게 작성 되었는지 궁금하네요!
작성한 전체코드를 보여주실 수 있을까요? 어떤 상황인지 알고 싶어요!
이번 질문 해결까지는 이곳에서 하고 다음 질문부터는 "질문" 카테고리로 부탁드립니다. 현재 올려주신 "고민있어요" 카테고리는 제게 따로 표시가 되지 않아 질문을 늦게 확인할 수도 있을 것 같아요!🙏
답글
jinu220
2023.05.16답변 감사드립니다.
오늘 다시 테스트 해보니 어제 뭔가 잘 못 했던것 같습니다.
구름 예제 작업형1에서
import pandas as pd a = pd.read_csv('/content/mtcars.csv')
from sklearn.preprocessing import minmax_scale
scale = minmax_scale() #괄호 유무?
a['qsec'] = scale(a['qsec'])
from sklearn.preprocessing import LabelEncoder
cols = a.select_dtypes(include='object').columns
for col in cols:
le = LabelEncoder()
a[col] = le.fit_transform(a[col]) print(a.head())
이런식으로 테스트 해본 건데, 코랩도 그렇고 구름도 minmax_scale뒤에 ()가 없어야 동작 합니다. 어제 뭔가 잘 못 본건지.... 저장을 안해놔서 혼란스럽네요 ㅎㅎ.
다만 le = LabelEncoder에서 () 유무에 관계없이 구름에서는 정상 동작하고, 코랩에서는 ()가 없으면 동작하지 않는 것만 추가로 확인했습니다.
퇴근후딴짓
2023.05.16정리하면 LabelEncoder과 minmax_scale 이 있는데 하나는 인코더고 하나는 스케일링인건 알고 계시죠?? 다릅니다!!
아마 문맥상 MinMaxScaler와 minmax_scale 차이 일것 같네요
MinMaxScaler은 fit과 transform이 필요하고 minmax_scale은 바로 작업을 실행하는 함수에요!
MinMaxScaler 코드는 알고 계신 것 같고, minmax_scale는 fit과 transform이 필요없이 아래와 같이 활용하면 됩니다.
MinMaxScaler만 사용하는 것이 어떨까요?
jinu220
2023.05.16네네 minmax_scale에는 fit, transform 없는 것은 인지하고 있었는데
사실 문제를 풀려고 했다기보다 이것저것 실행해보면서 실행결과가 구름에서는 어떻게 표현이되나 보려고 했었어요.
아마 제가 강의들으면서
RobustScaler 나 StandardScaler, MinMaxScaler를 불러오고
정의할 때
scaler = RobustScaler() 또는 StandardScaler() 또는 MinMaxScaler()
이걸 기억해서
minmax_scale에도 적용해야 되는 줄 알고 실수 한 것 같습니다.
답변 감사드립니다..!
퇴근후딴짓
2023.05.16네!! :) 화이팅 입니다. 🔥
팁을 드리면 범주형 데이터가 있는 경우 머신러닝 학습을 할 수 없으니 인코딩은 필수고요
스케일링은 옵션입니다. 스케일링 안 한다고 학습이 안 되는건 아니고 데이터에 따라 성능이 조금 올라갈 수도 있고 아닐 수도 있어요 ~
그래서 스케일링은 하나만 잘 써도 됩니다 :)
jinu220
2023.05.17감사합니다~~!!
구름에서 LabelEncoder는 또.. ()를 붙여야 동작하네요..
별도의 함수 정의없이 바로 사용하는게 맞는 방법 일까요?
답글