直接使用numpy来实现多项式回归
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = list(np.arange(0,4,0.1))
y = list(map(lambda val: val**3*3 + np.random.random()*20 , x) )
plt.scatter(x, y)
w = np.polyfit (x, y, 3)
fn = np.poly1d(w)
print(w)
print(fn)
plt.plot(x, fn(x))
[ 3.34727049 -2.08763962 1.78951724 12.1663519 ]
3 2
3.347 x - 2.088 x + 1.79 x + 12.17
[<matplotlib.lines.Line2D at 0x10c306be0>]

使用一层神经网络来拟合多项式回归
%matplotlib inline
import matplotlib.pyplot as plt
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.layers.advanced_activations import LeakyReLU, PReLU
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(100, input_shape=(1,)))
model.add(Activation('sigmoid'))
model.add(Dense(1))
model.compile(optimizer="sgd", loss="mse")
model.fit(x, y, epochs=2000, verbose=0)
plt.scatter(x, y)
plt.plot(x,
model.predict(x)
)
[<matplotlib.lines.Line2D at 0x181c0e2fd0>]

print(type(fn(3)))
print(fn(1))
print(fn(3))
<class 'numpy.float64'>
15.215500016873396
89.12245035357121
Code 下载