python离散点的线性回归_用python玩点有趣的数据分析——一元线性回归分析实例...

http://python.jobbole.com/81215/

本文参考了博乐在线的这篇文章,在其基础上加了一些自己的理解。其原文是一篇英文的博客,讲的十分通俗易懂。

本文通过一个简单的例子:预测房价,来探讨怎么用python做一元线性回归分析。

1. 预测一下房价

房价是一个很火的话题,现在我们拿到一组数据,是房子的大小(平方英尺)和房价(美元)之间的对应关系,见下表(csv数据文件):

从中可以大致看出,房价和房子大小之间是有相关关系的,且可以大致看出来是线性相关关系。为了简单起见,这里理想化地假设房价只和房子大小有关,那我们在这组数据的基础上,怎样预测任意大小的房子的房价呢?答案是用一元回归分析。

2. 一元回归分析是啥

讲到一元回归分析很多人应该不陌生,在初中还是高中的数学课程中肯定有学过,即对于一组自变量x和对应的一组因变量y的值,x和y呈线性相关关系,现在让你求出这个线性关系的直线方程,就是这样一个问题。

记得当时用的方法叫:最小二乘法,这里不再细讲最小二乘法的详细内容,其主要思想就是找到这样一条直线,使得所有已知点到这条直线的距离的和最短,那么这样一条直线理论上就应该是和实际数据拟合度最高的直线了。

下面我们将开篇提出的问题中的房价和房子的大小之间的关系用一个线性方程来表示:

表示大小为x(单位:平方英尺)的房子的价格为,其中θ0是直线的截距,θ1为回归系数,即直线的斜率。

我们要计算的东西其实就是θ0、θ1这两个系数,因为只要这两个系数确定了,那直线的方程也就确定了,然后就可以把要预测的x值代入方程来求:

3. 上代码

注:用到的3个库都可以用pip命令进行安装。

#!/usr/bin/python

# coding:utf-8

# python一元回归分析实例:预测房子价格

import matplotlib.pyplot as plt

import pandas as pd

from sklearn.linear_model import LinearRegression

# 从csv文件中读取数据,分别为:X列表和对应的Y列表

def get_data(file_name):

# 1. 用pandas读取csv

data = pd.read_csv(file_name)

# 2. 构造X列表和Y列表

X_parameter = []

Y_parameter = []

for single_square_feet,single_price_value in zip(data['square_feet'],data['price']):

X_parameter.append([float(single_square_feet)])

Y_parameter.append(float(single_price_value))

return X_parameter,Y_parameter

# 线性回归分析,其中predict_square_feet为要预测的平方英尺数,函数返回对应的房价

def linear_model_main(X_parameter,Y_parameter,predict_square_feet):

# 1. 构造回归对象

regr = LinearRegression()

regr.fit(X_parameter,Y_parameter)

# 2. 获取预测值

predict_outcome = regr.predict(predict_square_feet)

# 3. 构造返回字典

predictions = {}

# 3.1 截距值

predictions['intercept'] = regr.intercept_

# 3.2 回归系数(斜率值)

predictions['coefficient'] = regr.coef_

# 3.3 预测值

predictions['predict_value'] = predict_outcome

return predictions

# 绘出图像

def show_linear_line(X_parameter,Y_parameter):

# 1. 构造回归对象

regr = LinearRegression()

regr.fit(X_parameter,Y_parameter)

# 2. 绘出已知数据散点图

plt.scatter(X_parameter,Y_parameter,color = 'blue')

# 3. 绘出预测直线

plt.plot(X_parameter,regr.predict(X_parameter),color = 'red',linewidth = 4)

plt.title('Predict the house price')

plt.xlabel('square feet')

plt.ylabel('price')

plt.show()

def main():

# 1. 读取数据

X,Y = get_data('./price_info.csv')

# 2. 获取预测值,在这里我们预测700平方英尺大小的房子的房价

predict_square_feet = 700

result = linear_model_main(X,Y,predict_square_feet)

for key,value in result.items():

print '{0}:{1}'.format(key,value)

# 3. 绘图

show_linear_line(X,Y)

if __name__ == '__main__':

main()

【输出结果】

coefficient:[ 28.77659574]

predict_value:[ 21915.42553191]

intercept:1771.80851064

image

4. 总结与不足

上述分析过程,有两点不足:

数据量太少,预测的误差可能较大;

影响房价不止房子大小这一个因素,肯定还有很多其他因素,这里没有把其他因素考虑进去,导致预测的结果也是不准确的。既然有一元回归分析,那肯定也有多元回归分析,留到以后再讲。

但是我们也看到可以用python的一些科学计算和数据分析的库自动的帮我们完成以前需要繁琐计算的过程,更加灵活高效,特别是面对上万上百万规模的数据的时候。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[BTS] WCF-SAP Connect to SAP gateway failed

日志名称: Application来源: BizTalk Server日期: 2012/11/15 15:58:24事件 ID: 5743任务类别: (1)级别: 警告关键字: 经典用户: 暂缺计算机: AppTestSrv.AppCenter.xz描述:The ad…

LeetCode MySQL 1112. 每位学生的最高成绩

文章目录1. 题目2. 解题1. 题目 表:Enrollments ------------------------ | Column Name | Type | ------------------------ | student_id | int | | course_id | int | | grade | int | ------------------------ (student_id…

设计精美Power Bi报告的诀窍以及让人眼前一亮的精美Power Bi图表

文章目录设计精美Power Bi报告诀窍一、使用对齐工具二、一次调整多个视觉效果三、使用主题四、使用搜索更快地格式化五、添加令人惊叹的图像形状元素六、对数据使用适当的可视化效果让人眼前一亮的精美Power Bi图表Infographic DesignerWalkers Animated PictogramAnimated Bar…

python模块的函数_python模块内置函数

python提供了一个内联模块buildin,该模块定义了一些软件开发中经常用到的函数,利用这些函数可以实现数据类型的转换、数据的计算、序列的处理等。 模块的内置函数: 1、apply():可以调用可变参数列表的函数,把参数存在一个元组或者…

大学英语四六各项分值

听力:248.5 听力客观题(单选):25%合177.5分每个7.1分;听力主观题(复合式听写):10%合71分,前八个每个3.55分共28.4分,后三个每个14.…

[Hands On ML] 7. 集成学习和随机森林

文章目录1. 投票分类2. Bagging、Pasting3. Out of Bag 评价4. 随机贴片与随机子空间5. 随机森林6. 极端随机树 Extra-Trees7. 特征重要程度8. 提升方法8.1 AdaBoost8.2 梯度提升8.3 Stacking本文为《机器学习实战:基于Scikit-Learn和TensorFlow》的读书笔记。 中文…

dll侧加载_WORD打开时出现加载DLL错误解决方法

WORD打开时出现加载DLL错误解决方法1、接下来看看解决办法,按组合键WIN R或者按开始---运行,打开运行窗口,2、在运行对话框中输入或者复制粘贴“%USERPROFILE%\AppData\Roaming\Microsoft\Templates”(注意双引号就不要输入咧),输…

SQL Server时间函数

一、统计语句 1、–统计当前【>当天00点以后的数据】 SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC2、–统计本周 SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())03、–统计…

LeetCode 635. 设计日志存储系统(map)

文章目录1. 题目2. 解题1. 题目 你将获得多条日志,每条日志都有唯一的 id 和 timestamp,timestamp 是形如 Year:Month:Day:Hour:Minute:Second 的字符串,例如 2017:01:01:23:59:59,所有值域都是零填充的十进制数。 设计一个日志…

PHP中file() 函数和file_get_contents() 函数的区别

PHP中file() 函数和file_get_contents() 函数的作用都是将整个文件读入某个介质,其主要区别就在于这个介质的不同。 file() 函数是把整个文件读入一个数组中,然后将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在…

ios 桥接文件找不到文件_电脑文件搜索神器,没有找不到的东西

随着工作或学习,使用电脑的时间增长,里面的文件也会越来越多。有时候想找某个文件,可能就突然忘了把它放在哪了。如果能想起文件名,那么还可以用电脑自带的搜索或者everything这类的软件进行搜索。但如果连文件名都忘了呢&#xf…

SQL行列问题

日常工作中,为了让数据的可读性更强,经常会对数据格式进行转化操作。总结一下日常工作中遇到的关于行列操作问题。 单行拆分成多行 --创建测试数据 CREATE TABLE fwj.customer ( id STRING, name STRING, mobiles STRING);INSERT INTO fwj.customer SEL…

LeetCode 296. 最佳的碰头地点(坐标独立+中位数的地方最近)

文章目录1. 题目2. 解题1. 题目 有一队人(两人或以上)想要在一个地方碰面,他们希望能够最小化他们的总行走距离。 给你一个 2D 网格,其中各个格子内的值要么是 0,要么是 1。 1 表示某个人的家所处的位置。这里&…

laravel 判断字符串包含_laravel 字符串操作大全

我们在使用laravel的时候常常会遇到一些字符串的操作,下面就为大家介绍laravel常用字符串的操作函数:// 将 UTF-8 的值直译为 ASCII 类型的值Str::ascii($value)Str::camel($value)Str::contains($haystack, $needle)Str::endsWith($haystack, $needles)…

LeetCode 360. 有序转化数组(抛物线对称轴)

文章目录1. 题目2. 解题1. 题目 给你一个已经 排好序 的整数数组 nums 和整数 a、b、c。对于数组中的每一个数 x,计算函数值 f(x) ax^2 bx c,请将函数值产生的数组返回。 要注意,返回的这个数组必须按照 升序排列,并且我们所…

vue webpack打包入口文件是哪个_Vue 学习笔记(二十五):webpack 相关

Webpack 是什么Vue CLI Webpack 相关 Webpack更多参考官方文档Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。 如图,Webpack 可以将多种静态资源 js、css、less 转换成一个…

美团差评数据分析,python代码实现

文章目录明确问题理解数据处理数据异常值处理标签处理新增计算列数据分析分析思路描述性分析探索性分析送达总时长时间过长,导致的差评骑手个人行为导致的差评商户行为导致的差评其他评价标签的白描建议明确问题 美团骑手出现差评的原因是什么?影响因素…

[原创]FineUI秘密花园(二十一) — 表格之动态创建列

有时我们需要根据数据来动态创建表格列&#xff0c;怎么来做到这一点呢&#xff1f;本章会详细讲解。 动态创建的列 还是通过一个示例来看下如何在FineUI中动态创建表格列&#xff0c;示例的界面截图&#xff1a; 先来看下ASPX的标签定义&#xff1a; 1: <ext:Grid ID"…

[Hands On ML] 8. 降维

文章目录1. 降维方法1.1 投影1.2 流行学习2. 降维技术2.1 PCA2.2 增量PCA2.3 随机PCA2.4 核PCA2.5. 调参2.6 LLE2.7 其他方法本文为《机器学习实战&#xff1a;基于Scikit-Learn和TensorFlow》的读书笔记。 中文翻译参考 特征维度太大&#xff0c;降维加速训练能筛掉一些噪声和…

ios13全选手势_iOS13系统5个简单实用的技巧 快速选择/三指操作/批量删除短信/文字转表情...

iOS 13 已经发布一段时间&#xff0c;苹果带来了不少新内容和细节上的优化&#xff0c;一起来看看 iOS 13 还有哪些隐藏的小技巧&#xff0c;希望对大家有所帮助。iOS13系统5个简单实用的技巧&#xff1a;快速选择文本当您在编辑文本时&#xff0c;光标是闪动的状态&#xff0c…