机器学习实战之线性回归

之前我们学习的机器学习算法都是属于分类算法,也就是预测值是离散值。当预测值为连续值时,就需要使用回归算法。本文将介绍线性回归的原理和代码实现。

线性回归原理与推导

如图所示,这时一组二维的数据,我们先想想如何通过一条直线较好的拟合这些散点了?直白的说:尽量让拟合的直线穿过这些散点(这些点离拟合直线很近)。

目标函数

要使这些点离拟合直线很近,我们需要用数学公式来表示。首先,我们要求的直线公式为:Y = XTw。我们这里要求的就是这个w向量(类似于logistic回归)。误差最小,也就是预测值y和真实值的y的差值小,我们这里采用平方误差:

求解

我们所需要做的就是让这个平方误差最小即可,那就对w求导,最后w的计算公式为:

我们称这个方法为OLS,也就是“普通最小二乘法”

线性回归实践

数据情况

我们首先读入数据并用matplotlib库来显示这些数据。

def loadDataSet(filename):
    numFeat = len(open(filename).readline().split('\t')) - 1
    dataMat = [];labelMat = []
    fr = open(filename)
    for line in fr.readlines():
        lineArr = []
        curLine = line.strip().split('\t')
        for i in range(numFeat):
            lineArr.append(float(curLine[i]))
        dataMat.append(lineArr)
        labelMat.append(float(curLine[-1]))
    return dataMat, labelMat
回归算法

这里直接求w就行,然后对直线进行可视化。

def standRegres(Xarr,yarr):
    X = mat(Xarr);y = mat(yarr).T
    XTX = X.T * X
    if linalg.det(XTX) == 0:
        print('不能求逆')
        return
    w = XTX.I * (X.T*y)
    return w

算法优缺点

  • 优点:易于理解和计算
  • 缺点:精度不高

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WD学习记录

机器学习 学习笔记(23) 卷积网络

卷积网络(convolutional network),也叫做卷积神经网络(convolutional neural network,CNN),是一种专门用来处...

1202
来自专栏AI研习社

手把手教你用LDA特征选择

本文用了一个经典的例子,从数据探索,模型假设,模型训练,模型可视化,step by step 让读者体验机器学习完整的流程。 导语 在模式分类和机器学习实践...

6044
来自专栏null的专栏

简单易学的机器学习算法——线性回归(1)

一、线性回归的概念     对连续型数据做出预测属于回归问题。举个简单的例子:例如我们在知道房屋面积(HouseArea)和卧室的数量(Bedrooms)的情况...

3538
来自专栏人工智能LeadAI

卷积,特征图,转置卷积和空洞卷积的计算细节

最近在做姿态估计的项目,在定制和实现卷积网络的时候发现自己对里面的一些计算细节还不够了解,所以整理了该文章,内容如下:

1153
来自专栏jeremy的技术点滴

机器学习课程_笔记06

2704
来自专栏AI星球

机器学习 | 聚类分析总结 & 实战解析

聚类分析是没有给定划分类别的情况下,根据样本相似度进行样本分组的一种方法,是一种非监督的学习算法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度...

922
来自专栏机器学习算法与理论

基于LDA KNN的人脸识别详解

人脸识别(LDA+KNN方法): dataTrain=creatData(TrainDatabasePath); dataTest=creatData(Tes...

5474
来自专栏人工智能LeadAI

TensorFlow从0到1 | 第十五章 重新思考神经网络初始化

上一篇14 交叉熵损失函数——克服学习缓慢从最优化算法层面入手,将二次的均方误差(MSE)更换为交叉熵作为损失函数,避免了当出现“严重错误”时导致的学习缓慢。 ...

3128
来自专栏机器学习、深度学习

弱监督语义分割--Object Region Mining with Adversarial Erasing

Object Region Mining with Adversarial Erasing: A Simple Classification to Semant...

3356
来自专栏WD学习记录

机器学习 学习笔记(5) 线性回归

给定数据集D={(x1,y1),(x2,y2),...,(xm,ym)},其中xi=(xi1;xi2;xi3;...;xid),yi是实数。线性回归试图学得一个...

935

扫码关注云+社区