반응형
머신러닝 모델을 구현하다 보면, 여러 가지 문제가 발생합니다. 오늘은 그중 ValueError : unknown label type 'continuous' 에러에 대하여 해결해 보겠습니다. 쉽게 해결할 수 있는 문제이니 빠르게 해결하셔서 구현을 이어나가시길 바랍니다.
unknown label type 'continuous' 해결하기
우선 이러한 문제는 분류모델을 구현함에 있어서 Y 변수 Type이 'int'형이 아니기에 발생하는 문제인데요.
따라서 Y값 Value에 대해서 형변환을 진행해주면 됩니다.
기준에 따라 다르겠지만, 'float'형의 경우 round 함수를 이용해 반올림을 진행하고, astype을 사용해 주면 되겠습니다.
# SVM을 예시로 들어보겠습니다.
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, random_state=0)
clf = svm.SVC(kernel='linear')
clf.fit(X_train, y_trian)
이러한 모델이 있다고 가정할 때 fit과정에서 type으로 인해 발생하는 Error이기에, 이를 해결해주면 되겠습니다.
Y = Y.round().astype('int')
위와 같이 Y, 즉 Target 변수 값의 형변환을 진행해주면 해결되겠습니다.
또한, 분류 문제이기에 0과 1로 분류해야하는 경우 Min, Max Scaler를 이용하여 0에서 1사이의 값으로 만들어준 후, Threshold값을 지정해준 후 (0.5) 이보다 크면 1, 작으면 0으로 바꿔주는 것도 방법이 되겠습니다.
from sklearn.preprocessing import MinMaxScaler
# MinMaxScaler 선언 및 학습
mMscaler = MinMaxScaler()
# int형이 아닐 시에만 아래 Code를 수행하고 학습 진행
mMscaler = mMscaler.astype('int')
mMscaler.fit(numeric_data)
반응형