线性回归的其他含义
注:一个基本初等函数充当另一个基本初等函数中的未知数时才算复合函数
特征扩展:
多项式回归(得到的模型图的效果一般都会比不用多项式回归的更加好):
线性回归的局限性是只能应用于存在线性关系的数据中,但是在实际生活中,很多数据之间是
非线性关系,也可以用线性回归拟合非线性回归,但效果很差,此时就需要对线性回归模型进
行改进,使之能够拟合非线性数据。
目标:将数据进行升维处理(特征拓展),可以更好的适应模型(有些数据不能通过一条直线来表达的时候,进行升维处理是比较好的)
简单来说数据的标签y的求导等于常数就是线性关系的数据
特征处理方法: sklearn.preprocessing.PolynomialFeatures(degree=2,interaction_only=False,include_bias=True)
(多项特征的预处理)
degree:多项式次数(就同几元几次方程中的次数一样) (2表示一次方升维到2次方)
interaction_only:是否包含单个自变量**n(n>1)特征数据标识(是否不对自身进行次方处理,True表示不对自身进行次方项处理)
这里的对自身次方处理就是比如传入x1和x2,就得到x1,x2还能得到x1的几次方和x2的几次方,不管对不对自身处理,里面都有对互相次方处理的过程,其中又有很多种情况,如果是2次方,那么相互作用只有x1乘x2,要求每个特征都要有至少1次方,0次方的是在进行另一个特征的自身处理时出现
include_bias:是否包含偏差标识(这里表示是否会生成截距,True是生成截距项)
多项式回归处理演示:
随便做出一个类似多项式的图像:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.uniform(-3,3, size=100)#100个样本点 ,在-3~3之间均匀采样
X = x.reshape(-1,1) #接下来的代码要区分好X和x
y = 0.5 * x**2 +x +2 + np.random.normal(0,1,size=100) #加入随机值,可以让曲线不是很完美
plt.scatter(x,y)
plt.show()
如果用线性回归来处理上面的多项式数据的话会发现明显不合理,有很多数据也没有拟合好:
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,y)(这里要创建模型,否则下面的标签y无法获得)
y_predict = lin_reg.predict(X)
plt.scatter(x,y)
plt.plot(x,y_predict,color='r')
plt.show()
使用底层来特征扩展,并将特征扩展的效果进行显示:
x2 = np.hstack([X,X**2]) #特征拓展 这里给样本X再引入1个特征项,现在的特征就有2个
lin_reg2 = LinearRegression(