私はkerasを使ってロジスティック回帰を使用しようとしています。これはMLでの私の最初の実験の1つです。のは、私が唯一の1引数でいくつかの非常に単純な連続関数の値を予測したいとしましょう、y = x*10
単純な線形関数を予測するための列車モデル
のように私はこのようなモデルを訓練しようとした:
from matplotlib import pyplot as plt
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation
# fix random seed for reproducibility
np.random.seed(7)
# function
curve = np.vectorize(lambda x: x*10)
# data
Xideal = np.arange(1, 15.5, 0.005)
Yideal = curve(Xideal)
X = Xideal[1::5]
Y = curve(X)
# Model
model = Sequential()
model.add(Dense(20, activation='sigmoid', input_dim=1))
model.add(Dense(5, activation='linear'))
model.add(Dense(1))
model.compile(loss='mse', optimizer='rmsprop', metrics=['accuracy'])
# Fit
model.fit(X, Y, nb_epoch=1000, batch_size=32, verbose=0)
# Evaluate
# evaluate the model
scores = model.evaluate(Xideal, Yideal)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
print("\n%s: %.2f%%" % (model.metrics_names[0], scores[0]*100))
くれ 2624/2900 [==========================>...] - ETA: 0s acc: 2.38% loss: 44.35%
の結果を与えていませんなぜそれがちょうど2.38%の正確さであるか確かめてください。私は異なる活性化関数、バッチサイズとエポックを持つ異なるモデルを試していましたが、最大10%の正確さで得ました。私はここで何か基本的なことを忘れていると思う。
1)ロジスティック回帰は、実際には回帰分析ではなく、分類である。しかし、あなたはあなたの仕事の回帰を望んでいるようです。 2)実際にデータを前処理する必要があります(標準化/正規化、NNのより重要なルールの1つ) – sascha