一、算法简介

代码下载:https://download.csdn.net/download/xdg2008/14017829

1.1 什么是回归分析

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,通常分析数据模型,找出一条最佳直线或超平面,使数据模型上的点到这条直线或超平面的距离最短。

1.2 线性回归

线性回归是回归问题中的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程。通过构建损失函数,来求解损失函数最小时的参数w和b。通长我们可以表          达成如下公式: 

1.3 推理过程

假设我们找到了最佳拟合的直线方程 : 

       则对每一个样本点    ,根据我们的直线方程,预测值为:,其对应的真值为   

            我们希望    和   的差距尽量小,这里我们用   表达   和  的距离,

      考虑所有样本则为:

           我们的目标是使   尽可能小,而    ,所以我们要找到  a 、b  ,使得  尽可能小。

      被称为损失函数或效用函数。

1.4  目标/损失函数

针对任何模型求解问题,都是最终都是可以得到一组预测值y^ ,对比已有的真实值 y ,数据行数为 n ,可以将损失函数定义如下:

即预测值与真实值之间的平均的平方距离,统计中一般称其为MAE(mean square error)均方误差。把之前的函数式代入损失函数,并且将需要求解的参数w和b看做是函数L的                   自变量,可得

现在的任务是求解最小化L时w和b的值,

即核心目标优化式为

1.5 求解方式有两种:

1)最小二乘法(least square method)

求解 w 和 b 是使损失函数最小化的过程,在统计中,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。我们可以将 L(w,b) 分别对 w 和 b 求导,得到

令上述两式为0,可得到 w 和 b 最优解的闭式(closed-form)解:

2)梯度下降(gradient descent)

梯度下降核心内容是对自变量进行不断的更新(针对w和b求偏导),使得目标函数不断逼近最小值的过程

二、案列实现

从给定的房屋基本信息以及房屋销售信息等,建立一个回归模型预测房屋的销售价格。

案列说明:

1.数据说明
数据主要包括2014年5月至2015年5月美国King County的房屋销售价格以及房屋的基本信息。
数据分为训练数据和测试数据,分别保存在kc_train.csv和kc_test.csv两个文件中。
其中训练数据主要包括10000条记录,14个字段,主要字段说明如下:
第一列“销售日期”:2014年5月到2015年5月房屋出售时的日期
第二列“销售价格”:房屋交易价格,单位为美元,是目标预测值
第三列“卧室数”:房屋中的卧室数目
第四列“浴室数”:房屋中的浴室数目
第五列“房屋面积”:房屋里的生活面积
第六列“停车面积”:停车坪的面积
第七列“楼层数”:房屋的楼层数
第八列“房屋评分”:King County房屋评分系统对房屋的总体评分
第九列“建筑面积”:除了地下室之外的房屋建筑面积
第十列“地下室面积”:地下室的面积
第十一列“建筑年份”:房屋建成的年份
第十二列“修复年份”:房屋上次修复的年份
第十三列"纬度":房屋所在纬度
第十四列“经度”:房屋所在经度

测试数据主要包括3000条记录,13个字段,跟训练数据的不同是测试数据并不包括房屋销售价格,学员需要通过由训练数据所建立的模型以及所给的测试数据,得出测试数据相应的房屋销售价格预测值。

2.步骤:

  • 1.选择合适的模型,对模型的好坏进行评估和选择。
  • 2.对缺失的值进行补齐操作,可以使用均值的方式补齐数据,使得准确度更高。
  • 3.数据的取值一般跟属性有关系,但世界万物的属性是很多的,有些值小,但不代表不重要,所有为了提高预测的准确度,统一数据维度进行计算,方法有特征缩放和归一法等。
  • 4.数据处理好之后就可以进行调用模型库进行训练了。
  • 5.使用测试数据进行目标函数预测输出,观察结果是否符合预期。或者通过画出对比函数进行结果线条对比

3.完整代码

# 兼容 pythone2,3
from __future__ import print_function# 导入相关python库
import os
import numpy as np
import pandas as pd#设定随机数种子
np.random.seed(36)#使用matplotlib库画图
import matplotlib
import seaborn
import matplotlib.pyplot as plotfrom sklearn import datasets#读取数据
housing = pd.read_csv('kc_train.csv')
target=pd.read_csv('kc_train2.csv')  #销售价格
t=pd.read_csv('kc_test.csv')         #测试数据#数据预处理
housing.info()    #查看是否有缺失值#特征缩放
from sklearn.preprocessing import MinMaxScaler
minmax_scaler=MinMaxScaler()
minmax_scaler.fit(housing)   #进行内部拟合,内部参数会发生变化
scaler_housing=minmax_scaler.transform(housing)
scaler_housing=pd.DataFrame(scaler_housing,columns=housing.columns)mm=MinMaxScaler()
mm.fit(t)
scaler_t=mm.transform(t)
scaler_t=pd.DataFrame(scaler_t,columns=t.columns)#选择基于梯度下降的线性回归模型
from sklearn.linear_model import LinearRegression
LR_reg=LinearRegression()
#进行拟合
LR_reg.fit(scaler_housing,target)#使用均方误差用于评价模型好坏
from sklearn.metrics import mean_squared_error
preds=LR_reg.predict(scaler_housing)   #输入数据进行预测得到结果
mse=mean_squared_error(preds,target)   #使用均方误差来评价模型好坏,可以输出mse进行查看评价值#绘图进行比较
plot.figure(figsize=(10,7))       #画布大小
num=100
x=np.arange(1,num+1)              #取100个点进行比较
plot.plot(x,target[:num],label='target')      #目标取值
plot.plot(x,preds[:num],label='preds')        #预测取值
plot.legend(loc='upper right')  #线条显示位置
plot.show()#输出测试数据
result=LR_reg.predict(scaler_t)
df_result=pd.DataFrame(result)
df_result.to_csv("result.csv")

学习笔记(三) 线性回归算法(Linear Regression)相关推荐

  1. AI(006) - 笔记 - 回顾线性回归(Linear Regression)

    线性回归(Linear Regression) 之前并未做过笔记,所以这篇文章是对线性模型的回顾,对应: 第一周:(06)1.6 线性回归模型 第一周:(07)1.6 线性回归模型-优化算法 第一周: ...

  2. 机器学习基础-吴恩达-coursera-(第一周学习笔记)----Introduction and Linear Regression

    课程网址:https://www.coursera.org/learn/machine-learning Week 1 -- Introduction and Linear Regression 目录 ...

  3. 机器学习之线性回归算法 Linear Regression

    回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关.相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况. 线性回归算法( ...

  4. 线性回归算法(Linear Regression)及相关案例

    线性回归算法的原理和代码实现 大家好,我是W 这次讲线性回归,之前有说逻辑回归(Logistic Regression),虽然逻辑回归负责分类,可是在数据到达二值函数之前的逻辑都是线性回归的逻辑,所以 ...

  5. 机器学习经典算法---线性回归(Linear Regression)算法

    线性回归(Linear Regression)算法 一.对于回归的理解 1.回归的定义 2.多元线性回归 3.广义线性回归 二.线性回归方程的求解 1.一般情况下为什么要用最小二乘法作为性能度量而不是 ...

  6. 线性回归(Linear regression)算法

    归类:属于有监督学习.判别模型.有预测函数.有优化目标,有优化求解算法 应用:股票价格预测(依据过去的数据预测将来的状态) 分类: 回归按照输入变量的个数可分为:一元回归和多元回归 按照输入变量和输出 ...

  7. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  8. 机器学习实战(七)线性回归(Linear Regression)

    目录 0. 前言 1. 假设函数(Hypothesis) 2. 标准线性回归 2.1. 代价函数(Cost Function) 2.2. 梯度下降(Gradient Descent) 2.3. 特征缩 ...

  9. 机器学习之单变量线性回归(Linear Regression with One Variable)

    机器学习之单变量线性回归(Linear Regression with One Variable) 1. 模型表达(Model Representation) 我们的第一个学习算法是线性回归算法,让我 ...

最新文章

  1. 牛逼哄洪的 Java 8 Stream,性能也牛逼么?
  2. Android应用开发:网络编程-1
  3. UDP socket programming in php
  4. CSS中使用flex弹性布局实现上下左右垂直居中排列并设置子元素之间的间距
  5. c语言中调整颜色的函数_C语言中的输入输出函数
  6. java 优酷视频缩略图_java获取优酷等视频缩略图
  7. c++ 协程_用yield实现协程
  8. html5media 网页播放视频,html5media 在IE8播放视频黑屏
  9. 小米蓝牙左右互联_小米真无线蓝牙耳机Air2评测:支持弹窗动画,半入耳设计全面升级...
  10. 道德如果一直在滑坡,终会酿成大祸,历朝历代,莫过于是……
  11. 第十一篇 面向对象进阶
  12. Julia : csv =hdf5
  13. Unity3D:UDPSocket通信模块
  14. 简单典型二阶系统_非典型二阶系统的特性
  15. cαr怎么发音_韵母a的发音情况是()。
  16. win10永久激活方法-备份
  17. 皮克公式:点阵中多边形的面积公式
  18. java实现微信小程序获取手机号(htts接口实现)
  19. 讯飞语义相似度baseline
  20. SpringCloud(三):监控中心 hystrix turbine

热门文章

  1. 计算机在材料中的应用论文,计算机应用毕业论文计算机技术在建筑材料检测中的应用.docx...
  2. linux下go语言编辑器,顺手的Go语言编辑器-IntelliJ IDEA
  3. 银河麒麟V10安装redis5.0.4
  4. 【矩阵论总结(4)】特征值、特征向量、特征矩阵、特征多项式
  5. CSUFT教务处爬虫项目 云服务器连接内网
  6. 开源程序员愤怒控诉!Github的「AI码农」Copilot就是寄生虫
  7. js实战练习—锤子热门商品
  8. HTML 标签、转义字符及相应的 Java 过滤方法
  9. pytest单元测试框架简介
  10. MarkDown标题自动添加编号