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下载,现在分享给大家,拿走不谢。

UE4逆向实战:如何快速定位UWorld和GName的5种实用技巧(含版本差异分析)

本文详细介绍了UE4逆向工程中快速定位UWorld和GName的5种实用技巧,包括特征码定位法、动态行为分析法、静态符号分析法等,并针对不同版本差异提供了适配方案。特别强调了UWorld作为游戏世界核心容器和GName作为名称管理系统的重要性,帮助开发者高效进行游戏逆向分析。

star的博客 892

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

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 657

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

【Niagara Vykon N4 】物联网学习 03照明控制及照明时间表

3.1 设计思路 3.2逻辑组件添加 ①依据原有控制照明逻辑,打开palette,找到schedule模块,添加BoolenSchedule。 ②打开kitContrl,找到Util,并添加BoolenSwitch。 ③剪切到原有的逻辑线,并进行逻辑连接,如下图。 ④新建BooleanWritable,命名为Switch,设置参数并进行逻辑连接,若下图。 3.3界面设计 ⑤至此完成了逻辑的设...

weixin_45217107的博客 2862

UE4-(蓝图)第五十五课图片九宫格拉伸的使用

一、为什么使用九宫格拉伸 在UI布局的时候,有时候使用的图片与我们要制作的UI大小有差距,如果图片是普通方式直接拉伸很可能造成图片四个角上的效果与原图片差距太大甚至是变形,这时候使用九宫格模式拉伸,可以保持图片四个角上的样式不发生改变,只对中间区域拉伸。 原始 正常拉伸: 九宫格拉伸: 二、图片参数设置 1.新建一个UI 控件蓝图,在CanvasPanel下拖入一个Image,选择一张...

Stone的博客 7884

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

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

weixin_34176694的博客 274

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 108

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

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

gitblog_01417的博客 650

基于STM32F407的DDS信号源设计与实现:DAC+DMA+TIM的高精度波形生成

本文详细介绍了基于STM32F407微控制器实现高精度DDS信号源的完整方案。通过结合DAC、DMA和TIM外设,并运用DDS算法,实现了分辨率高达0.001Hz的波形生成。文章深入剖析了相位累加器、波表查表等核心原理,提供了从CubeMX配置到代码实战的完整指南,并探讨了性能优化与高频输出问题的解决方案。

weixin_29193259的博客 501

结构力学本构模型:复合材料模型:复合材料热力学行为技术教程_2024-08-07_06-54-53.Tex

热塑性复合材料是一种由热塑性树脂基体和增强纤维组成的复合材料。与热固性复合材料不同,热塑性复合材料在加热时可以软化,冷却时硬化,这一过程可以重复进行,因此它们具有可回收和可再加工的特性。热塑性树脂,如聚酰胺(尼龙)、聚碳酸酯、聚醚醚酮(PEEK)等,与碳纤维、玻璃纤维等增强材料结合,可以制备出具有高强度、高刚度和良好耐热性的复合材料。热粘弹性理论是研究材料在温度变化和时间依赖性载荷作用下的变形和应力响应。复合材料,由于其独特的微观结构,展现出复杂的热粘弹性行为。

807

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

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

Feynman1999的博客 2447

Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置

串行器 +解串器组成,软件需要做的就是写这三部分的驱动,让摄像头数据能到达。3. 配置解串器和串行器的GMSL链路。串行器和解串器上电成功之后,就可以配置。软件配置(注意软件只可以配置速率,2. 9296上电,使能芯片。的版本和速率,比如版本是配置。配置成功之后,就会出现串行器。的链路,其它同类型的。设备地址,我设置的是。...

DSMGUOGUO的博客 1万+

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

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

weixin_34082854的博客 326

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

认识波士顿房价数据集

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

weixin_65259109的博客 1154

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值