前言

本文属于 线性回归算法【AIoT阶段三】,这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有 NumPyNumPyNumPy,PandasPandasPandas,MatplotlibMatplotlibMatplotlib 的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)

线性回归预测房价

1.数据加载

首先导包:

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression

我们要实现的是对 波士顿 这个城市进行房价预测,有关 波士顿 的数据,可以直接用代码:

boston = datasets.load_boston()

我们来看一下 datasets.load_boston() 里面都有哪些数据:

数据由三部分组成:

  • datadatadata 即数据,这些数据影响了房价,统计指标
  • targettargettarget 指房价,242424 就表示 242424 万美金
  • feature_namesfeature\_namesfeature_names 就是具体的指标,比如 CRIMCRIMCRIM:犯罪率;NOXNOXNOX:空气污染,NNN元素的含量;TAXTAXTAX :税收;这些指标都会影响到房价

我们把这些信息分开来处理:

boston = datasets.load_boston()X = boston['data']   # 数据,这些数据影响了房价,统计指标
y = boston['target'] # 房价,24就表示24万美金# CRIM:犯罪率
# NOX:空气污染,N含量
# TAX:税收
# 这些指标都和放假有关
feature_names = boston['feature_names'] # 具体指标

2.数据查看

# 506 表示 506 个统计样本
# 13 表示影响房价的 13 个属性
X.shape

# 506 个房子
# X -----> y 是一一对应的
# 数据 -----> 目标值对应
y.shape

3.数据拆分

# 506个数据、样本
# 拆分成两份:一份 80%用于训练,一份20%用于验证
# 拿出其中的80%,交给算法(线性回归),去进行学习、总结、拟合函数
# 20%作用:验证,测一测,看看算法,学习80%结束,是否准确
# 如何划分:利用 numpy 的 shuffle 打乱数据
index = np.arange(506)
np.random.shuffle(index)
index


506×80%≈405506 \times 80\%≈405506×80%≈405,故我们拿出打乱后的前 405405405 个数据用于训练算法,其余数据用于验证算法:

# 80% 训练数据
train_index = index[:405]
X_train = X[train_index]
y_train = y[train_index]
# 20% 测试数据
test_index = index[405:]
X_test = X[test_index]
y_test = y[test_index]

4.数据建模

np.set_printoptions(suppress = True) # 不使用科学计数法model = LinearRegression(fit_intercept = True)
# 建模:算法、方程
model.fit(X_train, y_train)
# 建模获取了斜率,斜率有大有小,有正有负
# 斜率为正代表正相关(面积),为负代表负相关(犯罪率)
display(model.coef_, model.intercept_)

5.模型验证

# 模型预测的结果:y_
y_ = model.predict(X_test).round(2)
# 展示前 30 个:
display(y_[:30])
# 展示真实结果的前 30 个:
display(y_test[:30])


算法的预测难免会有异常值,这是 不可避免的!

6.模型评估

# 最大值是 1,最小值可以小于 0
# 这个指标越接近 1,说明算法越优秀
model.score(X_test, y_test)

# 再来判断一下训练数据的得分
model.score(X_train, y_train)

显然,训练数据的得分是高的,这就好比我们在考试前都会做模拟题,我们如果考试卷的大部分题目都和模拟题是一样的,那么我们的分数就会高一些,如果考试的题目都是新题,那么我们的分数就会低一些

当然,我们评测数据不止这一个方法,下面简单介绍一下别的方法:

# 最小二乘法
from sklearn.metrics import mean_squared_error# 这个是测试数据,对应的是 20%
y_pred = model.predict(X_test)
y_true = y_test
mean_squared_error(y_true, y_pred)


我们再来看那 80%80\%80% 的训练数据:

# 80% 的训练数据:
mean_squared_error(y_train, model.predict(X_train))


注意我们这里的分数是 errorerrorerror,即 越小越好!

线性回归实战【房价预测】相关推荐

  1. MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测

    Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...

  2. 02-06 普通线性回归(波斯顿房价预测)+特征选择

    文章目录 普通线性回归(波士顿房价预测) 导入模块 获取数据 打印数据 特征选择 散点图矩阵 关联矩阵 训练模型 可视化 普通线性回归(波士顿房价预测) 导入模块 import pandas as p ...

  3. 基于多元线性回归的房价预测

    基于多元线性回归的房价预测 摘要 市场房价的走向受到多种因素的影响,通过对影响市场房价的多种因素进行分析,有助于对未来房价的走势进行较为准确的评估. 多元线性回归适用于对受到多因素影响的数据进行分析的 ...

  4. python使用线性回归实现房价预测

    一.单变量房价预测 采用一元线性回归实现单变量房价预测.通过房屋面积与房价建立线性关系,通过梯度下降进行训练,拟合权重和偏置参数,使用训练到的参数进行房价预测. 1.房屋面积与房价数据 32.5023 ...

  5. 线性回归 波士顿房价预测

    目录 线性回归对波士顿房价进行预测 一.基础概念: 1. 线性回归 2. 平均绝对误差,均方误差的理解 3. 决定系数 二.实验步骤与分析 1. 数据背景 2. 数据读入 3. 定义特征值.目标值 4 ...

  6. kaggle简单实战——房价预测(xgboost实现)

    最近正在学习xgboost,因此在kaggle上用xgboost做了个简单的小项目--波士顿房价预测(https://www.kaggle.com/c/house-prices-advanced-re ...

  7. 基于线性回归的房价预测分析

    一.分析问题 尝试使用线性回归模型分析波士顿房价数据集,达到可通过房子属性(X)预测房价(y)的效果. 二.获取数据 sklearn.datasets中自带的load_boston数据集. 三.数据探 ...

  8. educoder 数据挖掘算法原理与实践:线性回归(房价预测)

    第1关:线性回归算法思想 1 BC 第2关:动手实现线性回归 #encoding=utf8 import numpy as np#mse def mse_score(y_predict,y_test) ...

  9. 线性回归波士顿房价预测

    线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式. 线性回归当中主要有两种模型,一种是线性关系,另一种是 ...

  10. 机器学习——线性回归、房价预测案例【正规方案与梯度下降】

    # coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程--标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.dataset ...

最新文章

  1. Maya初学者完整的3D动画大师班视频教程
  2. 优秀领导者,离不开这6个品质
  3. java连接Excel数据库读取,写入,操纵Excel表格
  4. git reset HEAD^
  5. python 在Windows 下切换工作目录
  6. 云服务器 ECS 建站教程:创建基于ECS和RDS的WordPress环境
  7. java 图片分割_Java atlas图集分割
  8. java 接口类型成员变量_18.9 接口作为成员变量类型
  9. SlideringDrawer的使用(抽屉效果)
  10. CFD分析过程(CFD Analysis Process)
  11. golang byte转string_golang版memcached之groupcache缓存入门
  12. 软件设计师10-面向对象-设计模式
  13. filestream streamreader
  14. matlab polyfit次数上限_新年重磅福利!全国21座城市酒店、民宿不限次数免费住!1000+景区免费玩!...
  15. labview如何安装modbus离线模块_Chrome73如何下载和安装扩展离线文件crx
  16. 【SQL注入】 sql注入中的union和limt关键字的使用解析
  17. Android 屏蔽返回键、菜单键和Home键
  18. Hbase - RIT机制
  19. 笔记本无线上网设置教程(图文)
  20. 【机器学习】LP距离、欧式距离、曼哈顿距离、切比雪夫距离

热门文章

  1. Unity实现签到系统
  2. 《历》·陕西帝王陵寝一览
  3. 米尔格拉姆连锁信实验_连锁信:使客户对个性化电子邮件感到满意
  4. smart夏季的笑话
  5. 【ava数据集可视化】ava数据集ID可视化 A Video Dataset of Spatio-temporally Localized Atomic Visual Actions
  6. 数学建模算法与应用 线性规划(cvxpy包)
  7. 再谈中国的收入不平等问题
  8. android 小q机器人,腾讯小Q机器人第二代,是机器人也是家人
  9. 如何用墨刀画出iPhone灵动岛?
  10. postfix 邮箱设置及常见错误