用keras框架完成多项式回归Polynomial Regression模型构建
概念:
- 机器学习的问题包括分类问题和回归问题。分类问题是用模型划分类别,回归问题是用模型预测输入的输出。
- 有多种回归的技术,包括线性回归 (Linear Regression),逻辑回归(Logistic Regression), 多项式回归(Polynomial Regression),逐步回归(Stepwise Regression),岭回归(Ridge Regression),套索回归(Lasso Regression),ElasticNet 回归(ElasticNet Regression)等等
- 多项式回归用于已知变量和被预测的变量之间存在非线性关系的情况。对于这个问题的回归等式,如果其自变量指数大于1,它就是多项式回归等式。比如 x^2 + a = y这种情况。
使用keras模型简单地调用均方差(mean square error)作为损失函数就能解决这个问题,代码如下:
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)
points = 500
X = np.linspace(-3, 3, points)
y = np.sin(X) + np.random.uniform(-0.5, 0.5, points)
model = Sequential()
model.add(Dense(50, activation='sigmoid', input_dim=1))
model.add(Dense(30, activation='sigmoid'))
model.add(Dense(1))
adam = Adam(lr=0.01)
model.compile(loss='mse', optimizer=adam)
model.fit(X, y, epochs=50)
predictions = model.predict(X)
plt.scatter(X, y)
plt.plot(X, predictions, 'ro')
plt.show()
输出结果: