Polynomial regression
In [14]:
Copied!
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
np.random.seed(0)
"""
data collection & preprocessing
"""
# number of points
points = 500
# input data
X = np.linspace(-3, 3, points)
# signal
# y = np.sin(X)
# signal + noise
# Adding noise on the sin signal to produce difficult data to the model to learn
y = np.sin(X) + np.random.uniform(-0.5, 0.5, points)
# print(X)
# print(np.sin(X))
# print(np.random.uniform(-0.5, 0.5, points))
# print(y)
# plt.scatter(X, y)
"""
create model FFN
"""
model = Sequential()
# 1st hidden layer 50 nodes | 1 single input : price(size) : linear regrssion
model.add(Dense(50, activation='sigmoid', input_dim=1))
# 2nd hidden layer 30 nodes | activation layer : sigmoid : simple linear model
model.add(Dense(30, activation='sigmoid'))
# output layer
model.add(Dense(1))
# error optimizer : gradient descent Adam
adam = Adam(lr=0.01)
# mean square error = Moyenne Quadratique (fonction de coût)
model.compile(loss='mse', optimizer=adam)
"""
train
"""
model.fit(X, y, epochs=50)
"""
predictions of estimated values
"""
predictions = model.predict(X)
"""print prediction
"""
plt.scatter(X, y)
plt.plot(X, predictions, 'ro')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
np.random.seed(0)
"""
data collection & preprocessing
"""
# number of points
points = 500
# input data
X = np.linspace(-3, 3, points)
# signal
# y = np.sin(X)
# signal + noise
# Adding noise on the sin signal to produce difficult data to the model to learn
y = np.sin(X) + np.random.uniform(-0.5, 0.5, points)
# print(X)
# print(np.sin(X))
# print(np.random.uniform(-0.5, 0.5, points))
# print(y)
# plt.scatter(X, y)
"""
create model FFN
"""
model = Sequential()
# 1st hidden layer 50 nodes | 1 single input : price(size) : linear regrssion
model.add(Dense(50, activation='sigmoid', input_dim=1))
# 2nd hidden layer 30 nodes | activation layer : sigmoid : simple linear model
model.add(Dense(30, activation='sigmoid'))
# output layer
model.add(Dense(1))
# error optimizer : gradient descent Adam
adam = Adam(lr=0.01)
# mean square error = Moyenne Quadratique (fonction de coût)
model.compile(loss='mse', optimizer=adam)
"""
train
"""
model.fit(X, y, epochs=50)
"""
predictions of estimated values
"""
predictions = model.predict(X)
"""print prediction
"""
plt.scatter(X, y)
plt.plot(X, predictions, 'ro')
plt.show()
Epoch 1/50 16/16 [==============================] - 1s 2ms/step - loss: 0.6277 Epoch 2/50 16/16 [==============================] - 0s 2ms/step - loss: 0.2549 Epoch 3/50 16/16 [==============================] - 0s 2ms/step - loss: 0.2490 Epoch 4/50 16/16 [==============================] - 0s 2ms/step - loss: 0.2187 Epoch 5/50 16/16 [==============================] - 0s 1ms/step - loss: 0.2276 Epoch 6/50 16/16 [==============================] - 0s 2ms/step - loss: 0.2295 Epoch 7/50 16/16 [==============================] - 0s 1ms/step - loss: 0.2294 Epoch 8/50 16/16 [==============================] - 0s 2ms/step - loss: 0.2085 Epoch 9/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1957 Epoch 10/50 16/16 [==============================] - 0s 1ms/step - loss: 0.2095 Epoch 11/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1868 Epoch 12/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1655 Epoch 13/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1549 Epoch 14/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1554 Epoch 15/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1351 Epoch 16/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1389 Epoch 17/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1342 Epoch 18/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1194 Epoch 19/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1273 Epoch 20/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1124 Epoch 21/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1185 Epoch 22/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1347 Epoch 23/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1123 Epoch 24/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1149 Epoch 25/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1266 Epoch 26/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1090 Epoch 27/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1233 Epoch 28/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1093 Epoch 29/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1073 Epoch 30/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1103 Epoch 31/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1070 Epoch 32/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1147 Epoch 33/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1097 Epoch 34/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1107 Epoch 35/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1042 Epoch 36/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1098 Epoch 37/50 16/16 [==============================] - 0s 2ms/step - loss: 0.0981 Epoch 38/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1146 Epoch 39/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1050 Epoch 40/50 16/16 [==============================] - 0s 2ms/step - loss: 0.0945 Epoch 41/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1033 Epoch 42/50 16/16 [==============================] - 0s 1ms/step - loss: 0.0997 Epoch 43/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1050 Epoch 44/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1161 Epoch 45/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1097 Epoch 46/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1117 Epoch 47/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1066 Epoch 48/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1037 Epoch 49/50 16/16 [==============================] - 0s 1ms/step - loss: 0.1092 Epoch 50/50 16/16 [==============================] - 0s 2ms/step - loss: 0.1075
In [ ]:
Copied!