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))