データセットが約45000
サンプルの場合、それぞれバイナリ出力が0
または1
のいずれかです。しかし、sklearnパッケージでMLPクラシファイアを使用した後、入力が何であっても常に出力が1
であるモデルを取得しました。クラス0
の精度はゼロです。私はモデルのハイパーパラメータを変更しようとしましたが、出力は同じです。誰もそれを乗り越える方法を提案することはできますか?MLPクラシファイアを使用してクラスの精度がゼロになる
precision recall f1-score support
0 0.00 0.00 0.00 19967
1 0.57 1.00 0.73 26688
avg/total 0.33 0.57 0.42 46655
PS:私のコード
loc = './new_attributes_66.csv'
data = pd.read_csv(loc)
scaler = MinMaxScaler(feature_range = (-1,1))
scaler.fit(data)
data = scaler.transform(data)
print data
input = data[:,0:64]
output = data[:,65]
X_tr, X_tst, y_tr, y_tst = train_test_split(input, output, test_size=0.1)
clf = MLPClassifier(solver='sgd', alpha=1e-5, hidden_layer_sizes=(40,121), random_state=0, warm_start = True, tol = 0.0000001, early_stopping = False, learning_rate='adaptive',learning_rate_init = 0.1, max_iter=10000,shuffle=True,verbose=True)
clf.fit(X_tr,y_tr)
predicted = clf.predict(input)
#print "Accuracy using MLP classifier: "
print metrics.precision_score(output, predicted)
#print confusion_matrix(y_tst,predicted)
print metrics.classification_report(output,predicted)
#print clf.coefs_
データセット(CSV)へのリンク:https://app.box.com/s/vfqgool2u9ovdc9oyi9elq99aor6c6gk
アップデート: 私は、最新の研究結果によると、私のコードと結果を変更しました。 58.14 %
の精度で
precision recall f1-score support
-1.0 0.53 0.10 0.17 19967
1.0 0.58 0.93 0.72 26688
avg/total 0.56 0.58 0.48 46655
:私は、精度と再現率を向上させることができます。他のどのような方法で、ハイパーパラメータを変更できますか?
あなたのデータはどのように見えますか? – gionni
@gionni私のデータは '66'属性と' 0'または '1'のいずれかのターゲット出力を持っています。 – yobro97
これらの66の属性はどのようなものですか?それらは連続的で、カテゴリー的で、混合されていますか?前処理を使用していますか? – gionni