问题来自慕课斯坦福机器学习课程
更多机器学习内容访问omegaxyz.com

问题

·输入数据只有一维:房子的面积
·目标的数据只有一维:房子的价格
根据已知房子的面积和价格进行机器学习和模型预测
数据见文章末尾
数据需要标准化X=(X-aver(sum(Xi)))/std(Xi)

步骤①数据获取与处理

# 导入需要用到的库
import numpy as np
import matplotlib.pyplot as plt# 定义存储输入数据(x)和目标数据(y)的数组
x, y = [], []
# 遍历数据集,变量sample对应的正是一个个样本
for sample in open("C:\\Users\\dell\\Desktop\\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()


横轴是标准化之后的面积,纵轴是房子的价格

步骤②选择与训练模型

模型损失函数是平方损失函数也就是所谓的欧式距离,这里的目的是要将损失函数最小化
利用Numpy训练和优化

模型的数学表达式为:
f(x|p;n)=p0x^n+p1x^(n-1)+…+pn-1x+pn
L(p;n)=0.5∑[f(x|p;n)-y]^2

# (-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)

步骤③评估与显示

多项式拟合,采用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()


当n=4和10时出现过拟合现象,因此n=1是预测较好的模型

完整代码

# 导入需要用到的库
import numpy as np
import matplotlib.pyplot as plt# 定义存储输入数据(x)和目标数据(y)的数组
x, y = [], []
# 遍历数据集,变量sample对应的正是一个个样本
for sample in open("C:\\Users\\dell\\Desktop\\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,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)
# 根据参数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()

参考文献

Python与机器学习实战 何宇健
更多机器学习内容访问omegaxyz.com

数据集

在桌面创建txt文件,注意代码中的路径

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

更多机器学习内容访问omegaxyz.com

Python机器学习房价预测 (斯坦福大学机器学习课程)相关推荐

  1. 机器学习入门的绝佳材料:斯坦福大学机器学习课程原始讲义(含公开课视频)

    斯坦福大学机器学习课程原始讲义 本资源为斯坦福大学机器学习课程原始讲义,为 Andrew Ng  所讲,共计20个PDF,基本涵盖了机器学习中一些重要的模型.算法.概念,此次一并压缩上传分享给大家,朋 ...

  2. 斯坦福大学机器学习课程原始讲义 + 公开课视频

    斯坦福大学机器学习课程原始讲义 + 公开课视频 斯坦福大学机器学习课程原始讲义 本资源为斯坦福大学机器学习课程原始讲义,为 Andrew Ng  所讲,共计20个PDF,基本涵盖了机器学习中一些重要的 ...

  3. Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化(Regularization)”

     Coursera公开课笔记: 斯坦福大学机器学习第七课"正则化(Regularization)" +13投票 斯坦福大学机器学习第七课"正则化"学习笔记, ...

  4. Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”

    Coursera公开课笔记: 斯坦福大学机器学习第十一课"机器学习系统设计(Machine learning system design)" 斯坦福大学机器学习斯坦福大学机器学习第 ...

  5. 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”

    斯坦福大学机器学习第十课"应用机器学习的建议(Advice for applying machine learning)" 斯坦福大学机器学习斯坦福大学机器学习第十课"应 ...

  6. 斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”

    斯坦福大学机器学习第八课"神经网络的表示(Neural Networks: Representation)" 斯坦福大学机器学习第八课"神经网络的表示(Neural Ne ...

  7. Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”

    Coursera公开课笔记: 斯坦福大学机器学习第四课"多变量线性回归(Linear Regression with Multiple Variables)" 斯坦福大学机器学习第 ...

  8. Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”

    Coursera公开课笔记: 斯坦福大学机器学习第二课"单变量线性回归(Linear regression with one variable)" 发表于 2012年05月6号 由 ...

  9. 斯坦福大学机器学习第六课“神经网络的表示(Neural Networks: Representation)”

    斯坦福大学机器学习第六课"神经网络的表示(Neural Networks: Representation)" 本次课程主要包括7部分: 1)  Non-linear hypothe ...

  10. 斯坦福大学机器学习第五课正则化“

    斯坦福大学机器学习第五课"正则化" 本次课程主要包括4部分: 1)  The Problem of Overfitting(过拟合问题) 2)  Cost Function(成本函 ...

最新文章

  1. CentOS 7.0关闭默认防火墙启用iptables防火墙
  2. python绘制雷达图-使用Python绘制雷达图
  3. 用TensorFlow训练第一个模型
  4. mechanism and analysis
  5. PADS VX2.x安装教程
  6. Java基础之HashMap流程分析
  7. c# redis 如何设置过期时间_Redis 过期时间与内存管理
  8. 文件加密及解密openssl
  9. 数据库基础知识——DQL语言(一)
  10. 关于机器学习,这里有一份权威入门指南
  11. c++遍历文件夹下的文件_算法面试|开发者必备|使用递归函数进行无限分类及文件夹遍历...
  12. jQuery 源码系列(十八)class 相关操作
  13. 核心竞争力和壁垒 | 讲概念
  14. 一站式解决网站死链问题
  15. IOS版应用商店应用源码
  16. php 织梦手册,Dede标签快速手册
  17. 一个实验了解什么是ISIS
  18. 可视化——Excel2进阶
  19. 计算机18个专业方向
  20. 有没有手机版_漫威定制版智能手机壳 Galaxy S10的小伙伴不容错过

热门文章

  1. HTTP session的原理
  2. 每天一道剑指offer-栈的压入,弹出序列
  3. 利用python进行数据分析书籍_利用Python进行数据分析 (O'Reilly精品图书系列) 内省...
  4. java equals方法可变_java中equals方法和“==”的区别
  5. python setup.py_python setup.py 构建
  6. React:引入echarts绘制图表
  7. SQL:postgresql中COALESCE函数
  8. Javascript:简单的表单验证更改样式
  9. navicat编程界面_navicat for mysql使用方法
  10. 在线协作编辑算法简介- OT算法