error

[파이썬/머신러닝] DataConversionWarning: A column-vector y was passed when a 1d array was expected.

colin2 2024. 11. 12. 14:05

 

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True)

 

[문제]

 

경고 창이 발생한 코드

from sklearn.linear_model import SGDClassifier

sc = SGDClassifier(loss='log_loss', max_iter=10)
sc.fit(train_scaled, train_target)
print(sc.score(train_scaled, train_target))
print(sc.score(test_scaled, test_target))
 

 

[원인]

SGDClassifier는 레이블(target) 데이터를 1D 배열 형태로 받으려 하는데, 2D 배열로 되어 있어 발생하는 경고

 

 

[해결]

target을 1D 배열로 변환해주면 됨

train_target = train_target.ravel()  # 2D -> 1D로 변환
test_target = test_target.ravel()    # 2D -> 1D로 변환
 

 

완성코드

from sklearn.linear_model import SGDClassifier

train_target = train_target.ravel()
test_target = test_target.ravel()

sc = SGDClassifier(loss='log_loss', max_iter=10)

# 모델 학습
sc.fit(train_scaled, train_target)

# 학습 및 테스트 점수 출력
print(sc.score(train_scaled, train_target))
print(sc.score(test_scaled, test_target))