训练模型来预测简单的线性函数

时间:2016-11-03 14:43:57

标签: python machine-learning logistic-regression keras

我正在尝试使用keras进行逻辑回归,这是我在ML中的第一个实验之一。假设我想用一个非常简单的连续函数来预测值,只有一个参数,比如<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> Sort By Field: <select name="sort_by" id="sort_by"> <option value="shipdate">Ship Date</option> <option value="value">Value</option> </select> <br/>Sort Direction: <select name="sort_order" id="sort_order"> <option value="asc">Earliest Date First</option> <option value="desc">Latest Date First</option> </select> </form>

我试图训练这样的模型:

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

不确定为什么它只有2.38%的准确率。我正在试验具有不同激活功能,批量大小和时代的不同模型,但精度最高可达10%。我想我想念一些基本的东西

1 个答案:

答案 0 :(得分:2)

对于此线性数据,单个Dense层就足够了。 我只使用梯度下降而不是rmsprop。

我为您创建了一个ipython笔记本:http://nbviewer.jupyter.org/gist/lhk/6650e4fb85f625199ee5be6d52cbbd0d

请注意:在图中我必须手动将两条线彼此分开。这就是为什么有-2的原因。