1.房价预测问题分析

房价预测是一种最常见的监督学习和回归问题;在这个问题中,会给出一系列房子的数据,比如给定数据集中每个样本的正确价格,也就是它们的实际售价,然后运用学习算法,算出更多的正确答案。

2.代码详解

  1. 数据获取与处理。
    open(“house_prices.txt”, ‘r’) 以只读的方式打开文件。
    split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。
    虽然该数据集比较简单,但可以看到其中的数字都相当大。保留它原始形式确实可能是有必要的,但一般而言,我们应该对它做简单的处理以期望降低问题的复杂度。在本例中,采取常用的将输入数据标准化的做法,其数学公式为:(std(x)为标准差)
# 导入需要用到的库
import numpy as np
import matplotlib.pyplot as plt# 定义存储输入数据(x)和目标数据(y)的数组
x, y = [], []
# 遍历数据集,变量sample对应的正是一个个样本
for sample in open("house_prices.txt", 'r'):_x, _y = sample.split(",")# 将字符串数据转化为浮点数x.append(float(_x))y.append(float(_y))
# 读取完数据后,将他们转化为Numpy数组以方便进一步的处理
x, y = np.array(x), np.array(y)
# 标准化
x = (x - x.mean()) / x.std()
# 将原始数据集以散点的形式画出
plt.figure()
plt.scatter(x, y, c="g", s=6)
plt.show()


横轴是标准化之后的面积,纵轴是房子的价格
2. 选择与训练模型。
在弄好数据之后,下一步就要开始选择相应的学习方法和模型了。通过可视化原始数据,可以非常直观的感受到:通过线性回归中的多项式拟合是一个不错的办法。其模型的数学表达式如下:

模型损失函数是平方损失函数也就是所谓的欧式距离,这里的目的是要将损失函数最小化
利用Numpy训练和优化
p=polyfit(x,y,n)
说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。

# (-2,4)这个区间上取100个点作为画图的基础
x0 = np.linspace(-2, 4, 100)
# 利用Numpy的函数定义训练并返回多项式回归模型的次数
# deg参数代表着模型参数中的n,即模型中多项式的次数
# 返回的模型能够根据输入的x(默认是x0),返回预测的y
def get_model(deg):return lambda input_x=x0: np.polyval(np.polyfit(x, y ,deg), input_x)
  1. 评估与显示,多项式拟合,采用n=1,4,10进行评估
# 根据参数n、输入的x,y返回相对应的损失
def get_cost(deg, input_x,input_y):return 0.5 * ((get_model(deg)(input_x) - input_y) ** 2).sum()
# 定义测试函数集并根据它进行各种实验
test_set = (1, 4, 10)
for d in test_set:# 输出损失print(get_cost(d, x, y))
# 画出相应的图像
plt.scatter(x, y, c="g", s=20)
for d in test_set:plt.plot(x0, get_model(d)(), label="degree = {}".format(d))
# 将横轴和纵轴的范围分别限制在(-2,4)和(10^5,10^6)
plt.xlim(-2, 4)
plt.ylim(1e5, 1e6)
# 调用legend方法使曲线对应的label正确显示
plt.legend()
plt.show()


4. 分析结果当n=4和n=10时出现过拟合现象,所以n=1是预测较好的模型。
5. 该代码的数据集
house_prices.txt
2104,399900
1600,329900
2400,369000
1416,232000
3000,539900
1985,299900
1534,314900
1427,198999
1380,212000
1494,242500
1940,239999
2000,347000
1890,329999
4478,699900
1268,259900
2300,449900
1320,299900
1236,199900
2609,499998
3031,599000
1767,252900
1888,255000
1604,242900
1962,259900
3890,573900
1100,249900
1458,464500
2526,469000
2200,475000
2637,299900
1839,349900
1000,169900
2040,314900
3137,579900
1811,285900
1437,249900
1239,229900
2132,345000
4215,549000
2162,287000
1664,368500
2238,329900
2567,314000
1200,299000
852,179900
1852,299900
1203,239500

3.总结

监督学习指的就是们给学习算法一个数据集。这个数据集由“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案。用术语来讲,这叫做回归问题。
回归这个词的意思是,我们在试着推测出这一系列连续值属性。

机器学习--房价预测问题相关推荐

  1. 机器学习:房价预测项目实战

    作为机器学习刚入门门都没入的小白,学了理论总有一种有力使不出的赶脚,就想拿一些项目去练练手,而房价预测作为kaggle入门级别的项目,又是最经典的项目,于是就拿来试试啦. 注:本文的数据集链接来源于k ...

  2. 机器学习 ---- 房价预测

    """ 1.加载和切分数据 """ #加载数据 from sklearn.datasets import load_boston ##切分数 ...

  3. 机器学习理论学习(1)——房价预测

    文章目录 一. 对于文章涉及知识的学习 (1)数据处理--数据标准化 (2)欧式距离与马曼哈顿距离 (3)多项式拟合 二. 对于文章的理解 本文章的是基于另外一位博主文章的分析型文章,读者可先行阅读此 ...

  4. 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中线性回归算法的实例应用,并介绍正则化.岭回归方法.在上一篇文章中我介绍了线性回归算法的原理及推导过程:[机器学习](7) 线性回归算法:原理.公式 ...

  5. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分

    ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测)+预测新数据得分 导读 本文章基于前边的一篇文章,对13种机器学习的回归模型性能比较 ...

  6. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)来比较各模型性能

    ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测)来比较各模型性能 导读 通过利用13种机器学习算法,分别是LiR.kNN.SVR.D ...

  7. 【机器学习】从房价预测问题看回归算法

    关键词:机器学习 / 回归 文章目录 回归问题是什么 生成数据 最小二乘法学习一元线性回归模型 最小二乘法学习多元线性回归模型 梯度下降法学习回归模型 回归问题是什么 回归问题是除了分类问题以外,机器 ...

  8. 波士顿房价预测python决策树_机器学习·波士顿房价预测模型

    模型评估与验证 当我们的机器学习模型建立好之后,如何训练数据以获得最优的模型参数,又用什么指标来评价模型的优劣呢?本文以波士顿房价为例,说明如何训练数据以及对模型做评估,辨别模型的优劣. 第一步:导入 ...

  9. 波士顿房价预测python决策树_波士顿房价预测 - 最简单入门机器学习 - Jupyter

    机器学习入门项目分享 - 波士顿房价预测 该分享源于Udacity机器学习进阶中的一个mini作业项目,用于入门非常合适,刨除了繁琐的部分,保留了最关键.基本的步骤,能够对机器学习基本流程有一个最清晰 ...

最新文章

  1. Apache 基金会发布2018财年年报:Java 项目占大半
  2. 什么是PCB板上的鼠牙洞?
  3. python处理csv数据-Python处理csv文件
  4. 实战SSM_O2O商铺_27【商品类别】删除商品类别从Dao到View层的开发
  5. 网页设计的css样式,网页设计引入CSS样式的五种方式_css
  6. 减一天 日期函数_一文掌握excel中的日期函数
  7. 常用工具备忘(更新中)
  8. 基于Matlab的三维胖射线追踪算法
  9. 《REINFORCEMENT LEARNING (DQN) TUTORIAL》的学习笔记
  10. 动手编写Node的C++模块
  11. 书单丨把握Java技术发展的新趋势!
  12. 迪士尼收购福克斯,传媒巨头江山瓦解?
  13. 23种设计模式及案例整理分享(建议收藏)
  14. 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
  15. C语言入门(15道经典题目)
  16. 怎么购买虚拟主机合适?
  17. Go包管理工具Vendor使用教程
  18. 保姆级PS教程:建筑表现后期中的照明处理
  19. Hibernate征途(四)之映射 序
  20. 讴 mysql 首字母_MYSQL索引

热门文章

  1. Oracle清空表空间
  2. UML-顺序图与协作图
  3. java 除法分母不能为0_分母为0一定会抛异常吗?
  4. 某红书安卓数据库解密
  5. 【云计算】云计算的3种服务模式:IaaS、PaaS、SaaS
  6. 互联网反垄断的蝴蝶效应:“巨头买下整个赛道”一去不复返
  7. HDU1248完全背包
  8. 类的implements与extends区别
  9. Http和Web Socket
  10. 详解机器学习高维数据降维方法