Keras学习之3:回归问题(boston_housing数据为例)

机器学习实战二:波士顿房价预测 Boston Housing 波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次 阅读详情

     本实验使用boston_housing数据集对房价数据进行回归分析,数据来自1970年代,波斯顿周边地区的房价,是用于机器学习的经典数据集。该数据集很小,共计506条数据,分为404个训练样本和102个测试样本,因此需要采用K-Fold,这里取K=4。每条数据包含13个特征,分别为:

  1. CRIM - per capita crime rate by town
  2. ZN - proportion of residential land zoned for lots over 25,000 sq.ft.
  3. INDUS - proportion of non-retail business acres per town.
  4. CHAS - Charles River dummy variable (1 if tract bounds river; 0 otherwise)
  5. NOX - nitric oxides concentration (parts per 10 million)
  6. RM - average number of rooms per dwelling
  7. AGE - proportion of owner-occupied units built prior to 1940
  8. DIS - weighted distances to five Boston employment centres
  9. RAD - index of accessibility to radial highways
  10. TAX - full-value property-tax rate per $10,000
  11. PTRATIO - pupil-teacher ratio by town
  12. B - 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
  13. LSTAT - % lower status of the population

 由于每个维度的特征取值范围不同,因此需要先做数据的Normalization。具体代码实现如下:


from keras.datasets import boston_housing
from keras import models
from keras import layers
import numpy as np
import matplotlib.pyplot as plt

#train_data.shape:(404, 13),test_data.shape:(102, 13),
#train_targets.shape:(404,),test_targets.shape:(102,)
#the data compromises 13 features
#the targets are the median values of owner-occupied homes,in thousands of dollars
(train_data,train_targets),(test_data,test_targets)=boston_housing.load_data()
#feature-wise normalization
mean = train_data.mean(axis=0)
train_data -=mean
std = train_data.std(axis=0)
train_data/=std
#never use any quantity computed on the test data
test_data-=mean
test_data/=std

#build the model
#because we need to build a model several times,we use function to cons
def build_model():
    model = models.Sequential()
    model.add(layers.Dense(64,activation='relu',input_shape=(train_data.shape[1],)))
    model.add(layers.Dense(64,activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='rmsprop',loss='mse',metrics=['mae'])
    return model

#K-fold validation
k = 4
num_val_samples = len(train_data) // k
num_epochs = 500
all_scores = []
all_mae_histories = []
#K-fold validation and logs
k = 4
num_val_samples = len(train_data) // k
num_epochs = 500
all_scores = []
all_mae_histories = []
for i in range(k):
    print('正在处理fold #',i)
    #preparing the validation data:data from partition #k
    val_data = train_data[i*num_val_samples:(i+1)*num_val_samples]
    val_targets = train_targets[i*num_val_samples:(i+1)*num_val_samples]
    #preparing the training data:data from all other partitions
    partial_train_data = np.concatenate(
        [train_data[:i*num_val_samples],
         train_data[((i+1)*num_val_samples):]],
        axis=0
    )
    partial_train_targets = np.concatenate(
        [train_targets[:i * num_val_samples],
        train_targets[((i + 1) * num_val_samples):]],
        axis=0
    )
    #build the model
    model = build_model()
    #train the model,silent mode
    history = model.fit(partial_train_data,partial_train_targets,validation_data=(val_data,val_targets),epochs=num_epochs,batch_size=1,verbose=0)
    #evaluate the model in the validation data
    mae_history = history.history['val_mean_absolute_error']
    val_mse,val_mae = model.evaluate(val_data,val_targets,verbose=0)
    all_scores.append(val_mae)
    all_mae_histories.append(mae_history)

print("Complete!")
average_mae_history = [
    np.mean([x[i] for x in all_mae_histories]) for i in range(num_epochs)]
mean_score = np.mean(all_scores)
print("mean_score:",mean_score)

绘制出validation score,图片不是很有辨识度:

#plotting validation scores
plt.plot(range(1,len(average_mae_history)+1),average_mae_history)
plt.xlabel('Epochs')
plt.ylabel('Validation MAE')
plt.show()

采用移动平均平滑曲线重新绘图:

#plotting validation scores-excluding the first 10 data points
#using moving average to smooth the curve
def smooth_curve(points,factor=0.9):
    smoothed_points = []
    for point in points:
        if smoothed_points:
            previous = smoothed_points[-1]
            smoothed_points.append(previous*factor+point*(1-factor))
        else:
            smoothed_points.append(point)
    return smoothed_points
#remove head 10 points
smooth_mae_history  = smooth_curve(average_mae_history[10:])
plt.plot(range(1,len(smooth_mae_history)+1),smooth_mae_history)
plt.xlabel('Epochs')
plt.ylabel(('Validation MAE'))
plt.show()

   可以看出在第80个Epochs是validation score最好,后面开始overfitting,重新构建模型:

from the plot above ,the Validation MAE reaches the lowest in the 80th epochs
model =build_model()
model.fit(train_data,train_targets,epochs=80,batch_size=16,verbose=0)
test_mse_score,test_mae_score = model.evaluate(test_data,test_targets)
print("final test_mae_score:",test_mae_score)
输出结果为:
102/102 [==============================] - 0s 853us/step

final test_mae_score: 2.667761251038196

实验小结:

1、回归和分类使用不同的损失函数,在回归中通常使用Mean Square Error(MSE)

2、评价标准通常使用Mean Absolute Error,分类中通常使用accuracy

3、当样本数据量小的时候,通常使用K-Fold方法使训练的模型更可靠

十大核心机器学习算法详解:从回归到神经网络完整指南 机器学习算法作为人工智能的核心基础,通过数据驱动的方式让计算机具备学习和预测能力。其基本原理是通过训练数据构建数学模型,从而对未知数据进行预测或决策。从技术价值来看,机器学习算法能够处理复杂的非线性关系,在监督学习、无监督学习和深度学习等不同范式下解决各类实际问题。在应用场景方面,回归算法适用于房价预测等连续值预测任务,聚类算法如K-means在客户细分和异常检测中发挥重要作用,而神经网络则在图像识别和自然语言处理等复杂模式识别任务中表现突出。本文重点解析的十大核心算法包括线性回归、逻辑回归、决策树、随机森 阅读详情

相关推荐

亲手编程神经网络:回归任务的原理、调试与工程实践

神经网络回归不是调用API的黑箱操作,而是对连续输出空间建模的系统性工程。其核心在于理解MSE等损失函数如何通过梯度反向塑造权重更新,以及为何数据标准化、线性激活层、Huber损失和LeakyReLU等设计选择直接影响模型稳健性与泛化能力。相比分类任务的离散决策边界,回归需应对实数域上的无限预测可能,因而更依赖误差容忍机制、可调试计算图和分阶段验证策略。本文以Keras为载体,聚焦从数据预处理、网络结构、损失定制到梯度探查的全链路实践,帮助工程师将‘能跑通’升维为‘可解释、可干预、可信任’的深度学习能力。

cuk0051的博客 397

机器学习初学-使用Keras波士顿房价boston_housing数据集使用sklearn Linear Regression线性回归算法建模

加载波士顿房价数据集,创建一个线性回归模型,并使用训练集对模型进行拟合。对测试集进行预测,绘制真实值和预测值的折线图。计算模型的决定系数和r2均方误差。

qq_36001281的博客 1815

keras boston_housing 波士顿房价 回归问题

《deep learning with python》chollet 波士顿房价数据集: 13个数据特征,回归得出最后的MEDV房价。 keras 加载后,数据集拆分为: 训练数据一共,404例,每一例13个特征,labels就是房价 测试数据一共,102例,每一例13个特征,labels就是房价 (404, 13) (404,) (102, 13) (102,) 反思与总结 1、这是一个多个自...

q742971636的博客 2068

回归模型——波士顿房价数据集(《python 深度学习》)

1 数据集简介与数据的分析   1.1 数据背景简介       波士顿房价数据集是统计的20世纪70年代中期波士顿郊区房价的中位数,统计了当时教区部分的犯罪率、房产税等共计13个指标,统计出房价,试图能找到那些指标与房价的关系。本例子明显的是属于回归模型的案例。在数据集中包含506组数据,其中404是训练样本,剩下的102组数据作为验证样本。   1.2 数据结构的分析       先来...

CalvinHARRIS的博客 3万+

tf.keras.datasets详解

tf.keras.datasets详解

qq_19069557的博客 1360

使用Keras进行波士顿房价预测的回归神经网络实例

Keras是一个开源的神经网络库,它由Python编写,并能够运行在TensorFlow、Microsoft Cognitive Toolkit(CNTK)、或是Theano之上。Keras提供了高层次的神经网络API,使构建和实验深度学习模型变得更加简单、快速。Keras的设计哲学强调模块化、最小化以及扩展性,其核心优势可归纳为以下几点:用户友好性:Keras的设计以用户为中心,优先考虑简单性和直观性,使得初学者也能快速上手。模块化。

weixin_35636570的博客 1065

keras boston_housing数据集学习

keras boston_housing数据集学习 目的:预测20世纪70年代中期波士顿郊区房屋价格的中位数 特点:数据点较少,输入数据的每个特征都有不同的取值范围 1.指定gpu,设置显存自动增长 #指定gpu import os os.environ["CUDA_VISIBLE_DEVICES"] = "1" #设置显存自动增长 import tensorflow as tf config = tf.compat.v1.ConfigProto() config.gpu_options.allow_gr

npu2018302257的博客 2296

Keras六大经典数据集解析:从入门到实战的机器学习数据管道构建

在机器学习与深度学习领域,高质量的数据集是模型训练与评估的基石。标准数据集通过提供经过清洗、标注的规范化数据,帮助开发者快速验证模型原型、理解算法原理。其技术价值在于为文本分类、图像识别、回归分析等核心任务提供基准测试环境,让学习者能聚焦于模型架构设计与算法实现,而非数据收集的繁琐过程。在应用场景上,从IMDB情感分析、MNIST手写数字识别到CIFAR物体分类,这些数据集覆盖了自然语言处理、计算机视觉等关键技术领域。本文以Keras内置的六大经典数据集为例,深入探讨如何利用这些标准化资源构建高效的数据处理

weixin_29061425的博客 264

深度学习Keras(四):波士顿房价(boston_housing)数据集(回归问题)

keras内置数据集下载 keras.fit()和evaluate()中的verbose属性 不用K折验证 import numpy as np import matplotlib.pyplot as plt from keras import layers, models from keras.datasets import boston_housing import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #train_data.shape ->

WILDCHAP_的博客 4505

boston_housing.txt(波士顿房价数据txt)

经典波士顿房价数据集(txt版本),当时我因为网络原因无法用python下载,现在分享给大家,拿走不谢。

小白学电路之cadance搭建buffer电路

Buffer(缓冲器)是一种放大器或驱动电路,主要用于隔离输入和输出,以防止负载对前级电路造成干扰或影响。本文作者在电路方面是小白水平,目前正在学习,有不足之处欢迎指正。3.创建新的cellview,对此buffer进行仿真验证。2.创建buffer的symbol。电路中的V2的详细参数。

weixin_58051657的博客 1982

Deep Learning: Keras + Boston_housing

Predicting house price: a regression example # -*- coding: utf-8 -*- """ @Date: 2018/10/7 @Author: dreamhomes @Summary: """ from keras.datasets import boston_housing from keras import models from ...

梦家の博客 971

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5617

boston_housing-多分类问题

from keras.datasets import boston_housing import numpy as np from keras import models from keras import layers import matplotlib.pyplot as plt #x,13个特征,一共404条数据 #y,连续值标签,单位是千美元 (x_train,...

dihe3772的博客 464

STM32F4与LAN8720硬件连接避坑指南:从原理图到RMII信号完整性的实战解析

本文深入解析了STM32F4与LAN8720以太网连接的硬件设计要点与常见陷阱。重点剖析了电源上电时序、复位电路设计、RMII接口配置等关键环节,并提供了从原理图设计到PCB布局、信号完整性调试的完整实战指南,帮助硬件工程师规避设计风险,确保以太网通信的长期稳定运行。

weixin_29189003的博客 211

自动驾驶——最优控制算法(LQR)工程化总结

到近段时间,真正在我们的控制器上运行最优控制算法(LQR),一步一个脚印,从开始只是知道其“控制理论”的阶段、再到对着一堆网上的资料和公式一筹莫展不知何着手、再到初步实现了LQR算法的开发(但是使用的扭矩环控制,控制的不好,而且由于各种原因被delay,迟迟无法落地),直到大上个星期,泊车平台有此LQR开发需求,又重新了开始了算法的研发,用时一个周时间完成了算法开发,然后再用一个周时间进行实车最优控制算法验证与调试,取得了很大的进展,由于执行器是转角控制的,这无疑少了很多的工作量。

qq_40464599的博客 2787

Keras回归实战:从数据缩放到损失定制的七道技术关卡

神经网络回归不是简单拟合曲线,而是对输入特征分布、目标变量形态与业务误差敏感区的联合建模。其核心原理在于梯度传播受数据尺度、激活约束和损失函数设计的深度影响;技术价值体现在避免部署后系统性偏移、提升关键区间预测鲁棒性;典型应用场景包括传感器时序预测、金融数值预估与工业质量回归;本文聚焦Keras中必须手动控制的输入特征尺度变换策略与损失函数业务对齐两大断点,提供可复用的RobustScaler适配方案与分段加权MSE实现。

weixin_34176694的博客 274

UE4_UE5 自定义简单水材质(UE材质图表大全1)

首先是材质的颜色节点、粗糙度节点、透明度节点。(1/2/3/4键+右键空白处,可创建一/二/三/四维节点)接着是两个法线波动节点的叠加。最后是折射节点,将fresnel菲涅尔节点连接到材质结果节点的折射输入端。到这里,你基本已经实现了一个波纹流动的水材质。后续我会更新加上海面浪花的水面材质,可以到我的专栏中寻找。有问题随时私信沟通,加油❤。

shanlinhan的博客 1983

如何高效使用Keras内置数据集:从基础到自定义的完整指南

Keras作为一款面向人类的深度学习框架,提供了丰富的内置数据集和灵活的数据处理工具,帮助开发者快速构建和训练模型。本文将详细介绍Keras数据集的使用方法,包括内置数据集的加载与处理,以及如何创建自定义数据集,让你轻松掌握数据准备的关键步骤。 ## 一、Keras内置数据集概述 Keras内置了多种常用的经典数据集,涵盖图像分类、文本处理和回归分析等多个领域。这些数据集可以通过`keras.

gitblog_01417的博客 650

解锁机器人动态平衡算法:从原理到实践

机器人的动态平衡,是指机器人在运动过程中,面对各种复杂的动态变化和外界干扰,依然能够维持稳定状态,不发生倾倒或失去控制的能力。它就像是一位技艺精湛的舞者,在舞台上翩翩起舞时,无论做出多么复杂的动作,都能巧妙地调整身体姿态,始终保持平衡,展现出优美的舞姿。在实际应用中,机器人的动态平衡对于其稳定运行起着至关重要的作用。以双足机器人为例,当它行走在不平整的地面上时,地面的起伏会使机器人的重心不断发生变化。如果没有良好的动态平衡能力,机器人就很容易因为重心偏移而摔倒,无法完成行走任务。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3836

Python 爬虫实战:arXiv 学术论文 PDF 批量下载(含反爬策略与文件命名规范)

arXiv 是全球最大的免费开放预印本论文平台之一,涵盖物理学、数学、计算机科学等多个学科领域。研究人员、学生和工程师常常需要批量下载论文 PDF 进行文献综述、构建机器学习数据集或进行文本挖掘研究。然而,手动逐篇下载论文效率低下,因此开发一个自动化批量下载工具显得尤为重要。

yansideyucsdn的博客 1816

tf.keras入门(3) Predicting House Prices: Regression(boston_housing 数据集)

预测房价(回归) 预测 20 世纪 70 年代中期波士顿郊区房价的中间值。 该数据集包含 13 个不同的特征: 人均犯罪率。 占地面积超过 25000 平方英尺的住宅用地所占的比例。 非零售商业用地所占的比例(英亩/城镇)。 查尔斯河虚拟变量(如果大片土地都临近查尔斯河,则为 1;否则为 0)。 一氧化氮浓度(以千万分之一为单位)。 每栋住宅的平均房间数。 1940 年以前建造的自住房所占比例。...

Feynman1999的博客 2447

基于STM32的录音机设计(STM32F103+VS1053B)

本项目设计并实现了一款基于STM32微控制器的便携式录音机。该录音机采用STM32F103C8T6作为主控芯片,结合VS1053B音频编解码模块、SD卡存储、OLED显示屏以及按键模块,提供了手动录音、自动录音和录音回放等多种功能。

1万+

1cycle学习率调度实战:从原理到TensorFlow可复现代码

学习率调度是深度学习超参数优化的核心环节,直接影响模型收敛速度、泛化能力与训练稳定性。其本质是动态调节梯度更新步长,以平衡探索与利用、噪声抑制与精细微调。1cycle调度通过三段式线性变化(warmup-anneling-cool-down),在单周期内实现高效收敛,相比余弦退火等策略更具鲁棒性与确定性。该方法尤其适用于图像分类、时序预测和小样本回归等任务,在CIFAR-10、Fashion-MNIST和Boston Housing等典型数据集上已验证可提升准确率3%~8%,缩短收敛epoch达37%以上。

weixin_34082854的博客 326

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Keras.NET内置数据集API大全:MNIST、Cifar100、Reuters、BostonHousing数据加载方法完整指南

🚀 **Keras.NET** 是一款面向 C# 和 F# 开发者的**高级神经网络 API**,它通过 Python 绑定直接调用 Keras,可运行在 TensorFlow、CNTK 或 Theano 后端之上。本文将带你**快速上手** Keras.NET 的 7 个内置数据集加载方法——包括 MNIST、Cifar100、Reuters、BostonHousing 等经典数据集,让你在

gitblog_00225的博客 436

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

认识波士顿房价数据集

不管将对数据进行什么样的操作,对数据本身的理解包括对生成数据的业务的理解总是首要的。假设我现在要使用Keras对波士顿房价数据集进行回归,那么我首先要去了解这个数据集是什么样子的。首先,需要找到数据集的来源,一般在来源网站会有对数据集的描述。使用bing或者google搜索引擎,将会出现高质量的数据集的可能的来源。其官网的指示文档如下所示:对于数据集的描述只有其有13个属性,目标值是某个位置房屋价格的中位数。并没有对属性当中的数值做过多的解释,但是做数据分析对数据的理解是十分必要的。

weixin_65259109的博客 1154

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 爬虫学习之8:使用网站API获取数据(持续更新)
下一篇: Keras学习之4:多分类问题(reuters路透社新闻数据为例)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值