线性回归csv数据集_用mxnet的gluon线性回归训练只有两个特征的数据集

前言

自从上次试着用最基础的线性回归训练一个有80个特征的数据集,梯度爆炸之后,今天拿一个简单到不能再简单的数据集试试能不能成功收敛。途中我们又会遇到什么问题?

数据集

来自吴恩达机器学习课程第二周的课后练习。原本是txt文件,我通过下面三行代码把数据集另存为了csv,可以在这里下载。

import pandas as pd
df = pd.read_csv("ex1data2.txt",delimiter=',')
df.columns=['size','bedroom','price']
df.to_csv('house_simple.csv')

读取数据集

数据没有分训练集和测试集,房子的特征只有面积和房间数两个。 我们将通过pandas库读取并处理数据

导入这里需要的包

%matplotlib inline
import d2lzh as d2l
from mxnet import autograd, gluon, init, nd
from mxnet.gluon import data as gdata, loss as gloss, nn
import numpy as np
import pandas as pd
data = pd.read_csv('data/house/house_2_features.csv' ,index_col=0)
data.head()

size bedroom price 0 1600 3 329900 1 2400 3 369000 2 1416 2 232000 3 3000 4 539900 4 1985 4 299900

data.shape
(46, 3)

预处理数据集

我们对连续数值的特征做标准化(standardization):设该特征在整个数据集上的均值为$mu$,标准差为$sigma$。那么,我们可以将该特征的每个值先减去$mu$再除以$sigma$得到标准化后的每个特征值。对于缺失的特征值,我们将其替换成该特征的均值。

data = data.apply(lambda x: (x - x.mean()) / (x.std()))data.fillna(0);

标准化后,每个特征的均值变为0,所以可以直接用0来替换缺失值。

data.head()

size bedroom price 0 -0.495977 -0.226166 -0.073110 1 0.499874 -0.226166 0.236953 2 -0.725023 -1.526618 -0.849457 3 1.246762 1.074287 1.592190 4 -0.016724 1.074287 -0.311010

把数据集分成两部分,训练集和测试集,并通过values属性得到NumPy格式的数据,并转成NDArray方便后面的训练。

n_train=36
train_features = nd.array(data[['size','bedroom']][:n_train].values)
test_features = nd.array(data[['size','bedroom']][n_train:].values)
train_labels = nd.array(data.price[:n_train].values).reshape((-1, 1))
train_features.shape
(36, 2)
train_features[:3]
[[-0.4959771  -0.22616564][ 0.4998739  -0.22616564][-0.72502285 -1.526618  ]]
<NDArray 3x2 @cpu(0)>

定义模型

我们使用一个基本的线性回归模型和平方损失函数来训练模型。 关于更多gluon使用的步骤请参考这里

net = nn.Sequential()
net.add(nn.Dense(1))

初始化模型参数

net.initialize(init.Normal(sigma=0.01))

定义损失函数

loss = gloss.L2Loss()

定义优化算法

创建一个Trainer实例,并指定学习率为0.03的小批量随机梯度下降(sgd)为优化算法。该优化算法将用来迭代net实例所有通过add函数嵌套的层所包含的全部参数。这些参数可以通过collect_params函数获取。

trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.03})

训练模型

随机读取包含batch_size个数据样本的小批量

batch_size=4
train_iter = gdata.DataLoader(gdata.ArrayDataset(train_features, train_labels), batch_size, shuffle=True)
num_epochs = 10
for epoch in range(1, num_epochs + 1):for X, y in train_iter:with autograd.record():l = loss(net(X), y)l.backward()trainer.step(batch_size)l = loss(net(train_features), train_labels)print('epoch %d, loss: %f' % (epoch, l.mean().asnumpy()))
epoch 1, loss: 0.349735
epoch 2, loss: 0.255017
epoch 3, loss: 0.207258
epoch 4, loss: 0.180886
epoch 5, loss: 0.166463
epoch 6, loss: 0.156838
epoch 7, loss: 0.150244
epoch 8, loss: 0.145748
epoch 9, loss: 0.142224
epoch 10, loss: 0.139501

后记

暂时看训练是能收敛的,损失也比上次少很多很多。下次我们再看几个问题: + 怎么算测试集的房价 + 有没有过拟 + 损失函数的结果怎么看,是大还是小

新手村的小伙伴们,你们有什么看法呢?

4c62e12ab32db1400b26d7b87eef4be7.png

此处围观我的github 博客,这里下载本文代码

续集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中include标签的用法_原 ng-include用法分析以及多标签页面的简单实现方式

在平时的项目开发中&#xff0c;应该会经常遇到上图所示的需求&#xff0c;就是在一个页面中有多个标签&#xff0c;被选中的标签颜色会高亮显示&#xff0c;切换不同标签显示相应的不同内容。如果内容代码过多则写在同一个html文件就会显得特别乱&#xff0c;所以这里我们最好…

Java中如何引用文档对象模型_在JAVA中使用文档对象模型DOM经验小结

文档对象模型 (DOM) 是一个文档标准&#xff0c;对于完备的文档和复杂的应用程序&#xff0c;DOM 提供了大量灵活性。DOM标准是标准的。它很强壮且完整&#xff0c;并且有许多实现。这是许多大型安装的决定因素--特别是对产品应用程序&#xff0c;以避免在API发生改变时进行大量…

禅道项目管理_禅道 11.6.1 版本发布,完善细节,修复 Bug

禅道项目管理软件集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体&#xff0c;是一款功能完备的项目管理软件&#xff0c;完美地覆盖了项目管理的核心流程。禅道官网&#xff1a;www.zentao.net。大家好&#xff0c;禅道项目管理软件11.6.1发布&#xff0…

mendeley引用参考文献不显示_免费文献管理器Mendeley

June 2020有机合成化学文献检索今天小编给大家分享一款免费又好用的文献管理器——Mendeley&#xff0c;另外晶体cif文件下载—Materialsproject和COD数据库可在菜单栏的文献检索[文献管理/资源]中查看Mendeley是什么Mendeley是一款免费的跨平台文献管理软件&#xff0c;同时也…

pgsql vs mysql查询_对比平台--SQL Server Vs PostgreSQL

Microsoft SQL Server是一个数据库管理和分析系统&#xff0c;主要用于电子商务&#xff0c;业务范围和不同的数据仓库解决方案。另一方面&#xff0c;PostgreSQL是高级的对象关系数据库管理系统&#xff0c;它为SQL标准的扩展子集提供支持&#xff0c;包括不同的事务&#xff…

停车场管理系统代码_jsp19109商场商铺停车场服务系统-SSM-Mysql

jsp19109商场商铺停车场服务系统-SSM-Mysql该设计有演示视频    100%能运行买重包换  保密发送  一校一份编号&#xff1a;jsp19109语言数据库&#xff1a;jspMysql论文字数&#xff1a;12032字摘 要随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。计…

java中compare语句的用法_Java RuleBasedCollator compare()用法及代码示例

java.text.RuleBasedCollat​​or类的compare()方法用于比较两个对象的强度&#xff0c;并且根据结果将返回0&#xff0c;正值和负值作为输出。用法:public int compare(Object o1, Object o2)参数&#xff1a;此方法需要两个对象之间进行比较。返回值&#xff1a;如果第一个对…

qregexp限制数字范围_数字系统实现电压电流控制的必经之路数模转换器

《芯势力》系列接上一篇文章&#xff0c;我们了解到了模数转换器&#xff0c;本文将带你了解数模转换器。看名字就能知道&#xff0c;如果模数转换器实现了模拟信号到数字信号的转换&#xff0c;那么&#xff0c;数模转换器就是模数转换器的逆过程&#xff0c;即把数字信号转换…

java 什么时候依赖注入_玩框架java依赖注入 – 何时使用单例

So I am wondering, should I be using singleton objects as the examples seem to imply? If this is the case, what is the advantage compared to the old static methods approach?依赖注入是一种将应用程序连接在一起的技术.您编写的组件并不直接相互依赖.而是将组件注…

四天人工智能 python入门体验课_百度深度学习7天打卡营,用Python+AI识别“青你2”小姐姐的高颜值...

原标题&#xff1a;百度深度学习7天打卡营&#xff0c;用PythonAI识别“青你2”小姐姐的高颜值“淡黄的长裙&#xff0c;蓬松的头发”&#xff0c;一夜之间洗脑全网&#xff0c;小姐姐们实在太让人上头了&#xff01;导师“小甜豆”Lisa 满屏的大长腿、蚂蚁腰&#xff0c;又飒又…

js方式调用php_js如何调用php函数

js调用php函数的方法&#xff1a;jQuery.ajax({type: "POST",url: your_functions_address.php,dataType: json,data: {functionname: add, arguments: [1, 2]},success: function (obj, textstatus) {if( !(error in obj) ) {yourVariable obj.result;}else {conso…

最大子序列求和_算法——求最大子段和

一、问题描述给定由n个整数组成的序列(a_1,a_2,…,a_n)&#xff0c;最大子段和问题要求该序列形如 的最大值(1≤i≤j≤n)&#xff0c;当序列中所有整数均为负整数时&#xff0c;其最大子段和为0。例如&#xff0c;序列(-20, 11, -4, 13, -5, -2)的最大子段和为&#xff1a; 注意…

seo黑帽劫持用的php,黑帽seo 论坛:黑帽seo防止网站被k的js劫持跳转代码

由于目前百度搜索百度搜索引擎对于js代码还没有办法完全辨别&#xff0c;因此也就出现了运用js代码跳转的黑帽优化提升手法。现如今在网络上有关js跳转代码不计其数&#xff0c;但是作为黑帽优化提升的seo手法之一&#xff0c;如何确保有效降低跳转的网址被k危害性&#xff0c;…

python vtk mousemove_VTK的视点研究之三维空间漫游(转载)

VTK的视点研究之三维空间漫游(转载)分类&#xff1a;计算机2009-08-17 16:19阅读(?)评论(0)#include #include "vtkConeSource.h"#include "vtkPolyDataMapper.h"#include "vtkRenderWindow.h"#include "vtkCamera.h"#include "…

php实现金币提现,PHP实现微信提现功能

本文实例为大家分享了PHP实现微信提现功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下一、实现功能这几天在小程序里要实现用户从系统中提现到零钱的功能&#xff0c;查了一下文档可以使用 企业付款到用户零钱 来实现&#xff1b;官方文档注意事项&#xff1a;商…

oracle 同义词_【干货7】Oracle知识关键代码摘要

&#xff08;如果我分享的干货内容对你有帮助&#xff0c;可以通过赞或者评论的方式告诉我&#xff0c;我会持续分享&#xff1b;或者留言你想要的IT方面的支持&#xff0c;我将分享大家感兴趣的IT类技术干货&#xff1b;如果没有收到大家的反馈&#xff0c;10天后我将停止技术…

php new static,PHP面向对象中new self( )和 new static( ) 的区别

首先阐明结论&#xff0c;在PHP中 self指向定义了当前被调用方法的类&#xff0c; static指向调用当前静态方法的类。接下来通过一个例子来证明上面的结果class A{public static $_a Class A;public static function echoProperty(){echo self::$_a . PHP_EOL;}}class B exten…

python 动态规划_DP动态规划(Python实现)

前言_我们遇到的问题中&#xff0c;有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧&#xff0c;我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的&#xff0c;因为干巴巴的理论实在不好理解。注意&#xff1a;如果你对…

php gif 透明,解决PHP剪切缩略图生成png,gif透明图时,黑色背景问题

背景图填充白色背景$white imagecolorallocate($dstim,255,255,255);imagefilledrectangle($dstim,0,0,$width,$height,$white);imagecolortransparent($dstim,$white);设置图片走透明通道$img imagecreatefrompng($src);imagesavealpha($img,true);//这里很重要;$thumb ima…

qt做的接收串口数据并显示曲线_QT无人机地面站设计与制作

近年来&#xff0c;无人机可谓是大火。无论是军事&#xff0c;还是民用&#xff0c;它的地位更是不用说。但&#xff0c;如何利用利用现有技术对无人机的信息进行操作&#xff0c;实现人、机合一呢&#xff1f;“无人机地面站”应运而生&#xff0c;结合仿真系统为地面工作人员…