step1:数据预处理
调用sklearn包中的StandardScler进行数据归一化处理
基于Z得分归一化,这在方法是基于数据的均值和标准差,将数据转化为具有均值为0和标准差为1的正态分布。公式如下:(注意点:标准为0时要注意一下)
具体代码如下:
step2:调用sklearn包中的PolynomialFeatures进行多项式生成和交互特征。
其中:
degree:多项式的参数,即最高次幂。
interaction_only:一个布尔值,如果设置为True,则只生成交互项,不生成次幂项。默认为False,即同时生成次幂项和交互项。
include_bias:一个布尔值,用于指示是否在特征矩阵中包含偏置项(即常数项,通常为1)。默认情况下,include_bias=True
,意味着生成的特征矩阵会包含一个常数项。在这个例子中,include_bias=False
意味着不包含常数项。如果你的模型(如线性回归)已经包含了截距项,那么通常你会设置include_bias=False
。
代码如下:
step3:调用sklearn_linear_model包中的LinaerRegression进行模型回归
为什么是用LinearRegression对非线性回归进行建模,是因为前面已经使用PolynomialFeatures和fit_transform进行多项式生成和数据转换。
代码如下:
总结:
1. scaler会记录测试数据集的mean和std所以当有新的测试数据时,可以直接scaler.transfer(new_data)就可以完成数据转换
2. 因为是多项式回归拟合,poly_features会扩大特征的维数,因此对测试数据进行转换特征,因此后面也就是变成了只与参数有关的线性回归,因此后面也就直接建立的线性回归模型。
3. 一旦使用线性回归模型训练了数据,可以通过coef_属性来获得特征的系数(即参数值),截距值可以通过intercept_属性获得。
4. 多项式回归从本质上讲也是线性回归