通过基函数对元素数据进行交换,从而将变量间的线性回归模型转换为非线性回归模型。
def identity_basis(x): ret = np.expand_dims(x, axis=1) return ret def multinomial_basis(x, feature_num=10): x = np.expand_dims(x, axis=1) # shape(N, 1) feat = [x] for i in range(2, feature_num+1): feat.append(x**i) ret = np.concatenate(feat, axis=1) return ret def gaussian_basis(x, feature_num=10): centers = np.linspace(0, 25, feature_num) width = 1.0 * (centers[1] - centers[0]) x = np.expand_dims(x, axis=1) x = np.concatenate([x]*feature_num, axis=1) out = (x-centers)/width ret = np.exp(-0.5 * out ** 2) return ret
实验结果:
实验结果分析:
多项式回归(多项式基函数)比线性回归更好的拟合了数据
高斯基函数拟合效果比多项式基函数拟合效果更好