1

データセットをテストセットとトレインセットに分割した後に列車セットでロジスティック回帰を適用しました。上記のエラー。私はそれを解決しようとしたとき、私は0または1のような整数値を出力する私の応答ベクトルy_trainを印刷しようとしました。しかし、私は0.0と1.0のような浮動小数点数が見つかりましたファイルに書きました。それが問題だとすれば、どうしたらいいのだろう。ValueError:このソルバーはデータ内に少なくとも2つのクラスのサンプルが必要ですが、データには1つのクラスしか含まれていません:0.0

lenreg = LogisticRegression() 

print y_train[0:10] 
y_train.to_csv(path='ytard.csv') 

lenreg.fit(X_train, y_train) 
y_pred = lenreg.predict(X_test) 
print metics.accuracy_score(y_test, y_pred) 

次のようにStrackTraceは

トレースバック(最新の呼び出しの最後)、次のとおりです。

lenreg.fit(X_train, y_train) 

ファイル "/home/amey/prog/pd.py"、ライン82、フィット

self.max_iter, self.tol, self.random_state) 

ファイル "/usr/lib/python2.7/dist-packages/sklearn/linear_model/logistic.py"、ライン1154、 _fit_liblinearで、ライン885、

ファイル "/usr/lib/python2.7/dist-packages/sklearn/svm/base.py"

" class: %r" % classes_[0]) 

とValueError:このソルバーは、少なくとも2クラスのサンプルを必要としますデータには1つのクラスしか含まれていません:0.0

一方私は答えたlinkを見に行きました。解決策はありますか?

+1

いくつかの発言:(1)LogisticRegressionは**分類**であり、実際の回帰ではありません。クラスが必要です(2)Yはクラスで構成する必要があります。クラスを表す各サンプルの1d-boolean配列か、クラスを持つ各サンプルの1つの数(例えば、5クラス - >(0,1,2,3,4)の数)(3) Yは積分型でなければならない - >浮動小数点数なし!(4)y_trainをチェック! – sascha

答えて

2

ここでの問題は、あなたのy_trainベクターが何らかの理由でゼロしかないことです。実際にあなたのせいではないし、バグもある(私は思う)。クラシファイアには2つのクラスが必要です。そうでない場合は、このエラーがスローされます。

意味があります。 y_trainベクトルにゼロ(つまり1つのクラスのみ)がある場合、すべての予測がただ1つのクラスでなければならないので、クラシファイアは実際には何もする必要はありません。

私の意見では、クラシファイアはまだ完了し、ただ1つのクラス(この場合はすべてゼロ)を予測してから警告をスローするべきですが、そうではありません。代わりにエラーがスローされます。この条件をチェックする

方法は、このようなものです:より簡単な問題を克服するために

lenreg = LogisticRegression() 

print y_train[0:10] 
y_train.to_csv(path='ytard.csv') 

if len(np.sum(y_train)) in [len(y_train),0]: 
    print "all one class" 
    #do something else 
else: 
    #OK to proceed 
    lenreg.fit(X_train, y_train) 
    y_pred = lenreg.predict(X_test) 
    print metics.accuracy_score(y_test, y_pred) 

私はだけではなく、10

の100または1000のようなあなたのテストセットでより多くのサンプル、などの推薦します
関連する問題