学习笔记(三) 线性回归算法(Linear Regression)
一、算法简介
代码下载: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)相关推荐
- AI(006) - 笔记 - 回顾线性回归(Linear Regression)
线性回归(Linear Regression) 之前并未做过笔记,所以这篇文章是对线性模型的回顾,对应: 第一周:(06)1.6 线性回归模型 第一周:(07)1.6 线性回归模型-优化算法 第一周: ...
- 机器学习基础-吴恩达-coursera-(第一周学习笔记)----Introduction and Linear Regression
课程网址:https://www.coursera.org/learn/machine-learning Week 1 -- Introduction and Linear Regression 目录 ...
- 机器学习之线性回归算法 Linear Regression
回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关.相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况. 线性回归算法( ...
- 线性回归算法(Linear Regression)及相关案例
线性回归算法的原理和代码实现 大家好,我是W 这次讲线性回归,之前有说逻辑回归(Logistic Regression),虽然逻辑回归负责分类,可是在数据到达二值函数之前的逻辑都是线性回归的逻辑,所以 ...
- 机器学习经典算法---线性回归(Linear Regression)算法
线性回归(Linear Regression)算法 一.对于回归的理解 1.回归的定义 2.多元线性回归 3.广义线性回归 二.线性回归方程的求解 1.一般情况下为什么要用最小二乘法作为性能度量而不是 ...
- 线性回归(Linear regression)算法
归类:属于有监督学习.判别模型.有预测函数.有优化目标,有优化求解算法 应用:股票价格预测(依据过去的数据预测将来的状态) 分类: 回归按照输入变量的个数可分为:一元回归和多元回归 按照输入变量和输出 ...
- 吴恩达《机器学习》学习笔记三——多变量线性回归
吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...
- 机器学习实战(七)线性回归(Linear Regression)
目录 0. 前言 1. 假设函数(Hypothesis) 2. 标准线性回归 2.1. 代价函数(Cost Function) 2.2. 梯度下降(Gradient Descent) 2.3. 特征缩 ...
- 机器学习之单变量线性回归(Linear Regression with One Variable)
机器学习之单变量线性回归(Linear Regression with One Variable) 1. 模型表达(Model Representation) 我们的第一个学习算法是线性回归算法,让我 ...
最新文章
- 牛逼哄洪的 Java 8 Stream,性能也牛逼么?
- Android应用开发:网络编程-1
- UDP socket programming in php
- CSS中使用flex弹性布局实现上下左右垂直居中排列并设置子元素之间的间距
- c语言中调整颜色的函数_C语言中的输入输出函数
- java 优酷视频缩略图_java获取优酷等视频缩略图
- c++ 协程_用yield实现协程
- html5media 网页播放视频,html5media 在IE8播放视频黑屏
- 小米蓝牙左右互联_小米真无线蓝牙耳机Air2评测:支持弹窗动画,半入耳设计全面升级...
- 道德如果一直在滑坡,终会酿成大祸,历朝历代,莫过于是……
- 第十一篇 面向对象进阶
- Julia : csv =hdf5
- Unity3D:UDPSocket通信模块
- 简单典型二阶系统_非典型二阶系统的特性
- cαr怎么发音_韵母a的发音情况是()。
- win10永久激活方法-备份
- 皮克公式:点阵中多边形的面积公式
- java实现微信小程序获取手机号(htts接口实现)
- 讯飞语义相似度baseline
- SpringCloud(三):监控中心 hystrix turbine
热门文章
- 计算机在材料中的应用论文,计算机应用毕业论文计算机技术在建筑材料检测中的应用.docx...
- linux下go语言编辑器,顺手的Go语言编辑器-IntelliJ IDEA
- 银河麒麟V10安装redis5.0.4
- 【矩阵论总结(4)】特征值、特征向量、特征矩阵、特征多项式
- CSUFT教务处爬虫项目 云服务器连接内网
- 开源程序员愤怒控诉!Github的「AI码农」Copilot就是寄生虫
- js实战练习—锤子热门商品
- HTML 标签、转义字符及相应的 Java 过滤方法
- pytest单元测试框架简介
- MarkDown标题自动添加编号