一、算法简介

代码下载: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. ISLR_StatisticalLearning
  2. Linux——进程信号(总结)
  3. C++高级程序员基本技能你都具备吗?
  4. Linux常用命令(二)——超详版
  5. c语言开发实际,21实际c语言教程-1 (转)
  6. 微信小程序实现下拉刷新和上拉触底,获取新数据
  7. cf两边黑屏怎么解决win10_红警49期:win10玩红警2黑屏但有声音怎么办
  8. Codeforces Round #614 (Div. 2)A. ConneR and the A.R.C. Markland-N
  9. TDD实践之实用主义
  10. 大型养猪场智能监控系统开发
  11. Python将读取到的字符串文本数据转换成数字类型列表和数组
  12. Mysql delete删除表数据之后,表空间没有释放的问题
  13. 区块链教程之以太坊开发连接主网和测试网
  14. 计算机毕业设计基于asp.net网上考试报名系统——计算机毕业设计
  15. 5G NR CSI-RS介绍(2)-- TRS
  16. TXT迷你小说阅读器
  17. 【Axure篇】(二)Axure RP9日期控件制作(多种格式)
  18. 智能电表是如何实现远程监控的?
  19. 定调!深度解读央行DC/EP数字货币在28省市深化试点背后的逻辑
  20. 大数据各组件理论性总结---spark和hadoop(将持续更新)

热门文章

  1. 机房应用动环监控系统
  2. 扫码登录,背后是如何实现的?
  3. Stripe一家神奇的支付公司
  4. Python Challenge 第2关
  5. VMWare中Ubuntu重启后无法上网(已解决)
  6. 数据库内联接、左外联接、右外联接和全联接
  7. 宇宙间最伟大的程序员 Ray Ozzie
  8. 【Latex学习】在生成pdf中加入书签/目录/提纲
  9. 攀升 A3 刀锋一体机评测
  10. C++标准模板库之map及pair