机器学习实战(6) 预测数值型数据:回归

线性回归找到最佳拟合直线

loaddata导入数据,返回数据和结果值。
regress公式带入即可,这里记得要做个判断来确定np.dot(data.T,data)是否为0,如果行列式为0,计算逆矩阵的时候将会出错。

def loaddata(filename):
    data = []
    label = []
    with open(filename) as fr:
        for line in fr.readlines():
            arr = line.strip().split('\t')
            data.append(arr[:-1])
            label.append(float(arr[-1]))
    data = np.array(data).astype(float)
    label = np.expand_dims(np.array(label),axis=1)
    return data,label
def regress(data,label):
    if np.linalg.det(np.dot(data.T,data))==0.0:
        print('the array is singular, cannot do inverse')
        return
    ws = np.dot(np.linalg.inv(np.dot(data.T,data)),np.dot(data.T,label))
    return ws

绘图查看结果:

ws = regress(data,label)
import matplotlib.pyplot as plt
plt.figure()
plt.subplot(111)
plt.scatter(data[:,1],label)
xcopy = data.copy()
xcopy.sort(0)#按行排序 1按列排序
yhat = np.dot(xcopy,ws)
plt.plot(xcopy,yhat)
plt.show()

在这里插入图片描述

局部加权线性回归函数

线性回归函数可能出现欠拟合现象,这里我们采用局部线性回归函数来减小方差。
这里我们构建一个对角权重矩阵,该矩阵为每个样本点初始化一个权重,随着样本点与待预测点距离的递增,权重以指数级衰减,通过参数k控制衰减的速度。
未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值