机器学习与数据挖掘

多元线性回归

2020-03-02  本文已影响0人  抹茶不加茶

原理

相较于简单线性回归,多元线性回归仅仅是特征数从一变成了多,其他的基本上没有变化

利用正规方程进行实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
boston=datasets.load_boston()
#波士顿房产数据
x=boston.data
y=boston.target
x=x[y<np.max(y)]
y=y[y<np.max(y)]
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
#实际上这里size默认是0.2
#下面开始训练线性回归模型

X_b = np.hstack([np.ones((len(x_train), 1)), x_train])
theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)

intercept_ = theta[0]#返回截距
coef = theta[1:]#返回theta向量

        
xtest_b=np.hstack([np.ones((len(x_test), 1)), x_test]) 
y_predict=xtest_b.dot(theta)
mse_test=np.sum((y_predict-y_test)**2)/len(y_test)
rsquared=mse_test/np.var(y_test)

其中可也得到截距等参数如图


结果

使用sklearn进行多元线性回归

同样的例子,完全使用sklearn进行编写,这时候我们要注意到,它并没有采用正规化方程的方法,但由于我们是不用知道其底层究竟是如何封装的,所以目前尽管使用就是

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
boston=datasets.load_boston()
#波士顿房产数据
x=boston.data
y=boston.target
x=x[y<np.max(y)]
y=y[y<np.max(y)]
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
#实际上这里size默认是0.2
#下面开始训练线性回归模型
from sklearn.linear_model import LinearRegression
Lin_reg=LinearRegression()
Lin_reg.fit(x_train,y_train)
Lin_reg.score(x_test,y_test)
得到结果

总结

其实在学习的课程里面,关于多元线性回归还有一些对于可解释性等的思考与介绍,有利于我们对于现实模型的理解,这里我不是很想赘述,因为可能我们学习ml,更多用到的可能是后面复杂一些的算法,另外可解释性也是很容易理解的,在实际上手数据之后,相必我们拿到预测结果自己也能有所分析!!!所以内容暂且写到这里吧,以后还有想要增加的内容,我也会自行增加!

上一篇 下一篇

猜你喜欢

热点阅读