多元线性回归题目

  1. 自定义多元回归函数linearRegression,要求输入参数为 X X X y y y,分别为xArr和yArr,输出为参数 w s ws ws

  2. 已知最小二乘法的解为:
    w ^ = ( X T X ) − 1 X T y \hat{\boldsymbol{w}} = (\mathbf{X}^{\text{T}} \mathbf{X})^{-1}\mathbf{X}^{\text{T}} \boldsymbol{y} w^=(XTX)1XTy

  3. 使用美国医疗保险费数据insurance.csv的连续型特征age、bmi和children作为输入特征,目标特征为charges,根据linearRegression得到回归参数向量ws
    (1)注意判断 ( X T X ) − 1 (\mathbf{X}^{\text{T}} \mathbf{X})^{-1} (XTX)1是否存在
    (2)为了得到模型的截距,需要在数据矩阵X中添加一列,并且该列所有行的值都为1:np.column_stack((X,ones(X.shape[0])))

  4. 比较sklearn运行的结果跟自定义函数的输出结果是否一致

from sklearn import linear_model
from numpy import mat, linalg, column_stack, ones
import pandas as pd
insurance = pd.read_csv('insurance.csv')

# 定义多元线性回归函数
def linearRegression(xArr,yArr):
    xMat = mat(xArr)
    yMat = mat(yArr).T
    xTx = xMat.T*xMat
    if linalg.det(xTx) == 0.0:
        print "singular matrix, can't do inverse"
    ws = linalg.solve(xTx, xMat.T*yMat)
    return ws

# 模型训练,得到参数值
X = insurance[['age', 'bmi', 'children']].values
X = column_stack((X,ones(X.shape[0])))
y = insurance['charges']
ws = linearRegression(X, y)
print ws

# sklearn的训练结果
regr = linear_model.LinearRegression()
regr.fit(X, y)
print regr.coef_
print regr.intercept_
[[ 239.99447429]
[ 332.0833645 ]
[ 542.86465225]
[-6916.24334779]]
[239.99447429 332.0833645 542.86465225 0. ]
-6916.243347787033
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值