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

标签 python machine-learning logistic-regression keras

我正在尝试使用 keras 进行逻辑回归,这是我在 ML 方面的第一个实验之一。假设我想预测一些非常简单的连续函数的值,只有 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% 的准确率。我想我错过了一些基本的东西

最佳答案

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

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

请注意:在图中,我必须手动将两条线移开。这就是为什么有-2。

关于python - 训练模型来预测简单的线性函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404468/

相关文章:

python - 使用条件查找值

scikit-learn - 如何知道NLP模型中与特定类别相关的单词?

python - 在神经网络中找到最佳学习率和时期

python - 我在 google colab 中将图像转换为文本时出现 TesseractError : (2, 'Usage: pytesseract [-l lang] input_file' ) 错误

python - 使用 Python API 进行逻辑回归多类分类

algorithm - 逻辑回归和softmax回归的区别

python - 使用子进程时遇到问题

python - 函数仅返回列表的第一个输入,并且在输入超出范围时不继续

Python 程序作为 Windows 服务

python - scikit-learn:将任意函数应用为管道的一部分