1. 程式人生 > >ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only

ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only

sklearn報錯: ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 0.0

博主是在使用sklearn.learning_curve()這個函式時出現了這個問題,使用的estimator是Logistic regression,在網上一查,有很多人都報了同樣的錯,雖然使用案例不同,但是幾乎都是因為使用了Logistic regression而報錯。接下來會介紹有效的解決辦法。

先來看看我之前錯誤的示範吧:

train_sizes, train_scores, test_scores = learning_curve(estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes, verbose=verbose) #請注意X,y

請注意上面使用的是X,y。報錯想說我們使用的這兩個變數有問題。what?我們心想,X不就是特徵,y是標籤嗎,這都會錯?

於是,在stackoverflow上找到了有效解決該問題的方法:

from sklearn.utils import shuffle

X_shuffle, y_shuffle = shuffle(X, y)

再將轉換後的變數替換原來的變數重新訓練,就可以了成功達到預期效果了!