2--Kaggle: 房价预测

2.1 数据导入

        首先在Kaggle网站进行注册(如不想参加比赛也许可以不用注册)

        比赛地址:House Prices - Advanced Regression Techniques | Kaggle  

        这里有两种方法将数据放在colab上使用,第二种是直接本地下载后上传到Goole硬盘后,移动到创建的colab会话中并进行解压缩。

第一种是在colab会话中使用 Kaggle API 下载数据集,并解压缩并存放到实例的磁盘上

        点击头像页下的Account,https://www.kaggle.com/<YourKaggleID>/account

        往下滑找到API,点击Create New API Token,生成一个json文件。

        创建一个colab会话后,点击左侧的文件夹选项,然后将上一步下载的kaggle.json文件上传到该会话储存空间。

在colab中运行以下语句:
!pip install kaggle
! mkdir -p ~/.kaggle 
! cp /content/kaggle.json ~/.kaggle/ 
! chmod 600 ~/.kaggle/kaggle.json 
#这个命令在该网站获得:
#https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/data
!kaggle competitions download -c house-prices-advanced-regression-techniques

        在左边刷新一下就可以看见下载的数据压缩包 :

     

        对该数据压缩包进行解压缩,解压缩的文件就会在该会话的存储空间中,就可以直接使用了:

! unzip -q /content/house-prices-advanced-regression-techniques.zip 

        第二种是直接本地下载并解压后再放到goole云盘中,这样比较简单。下载路径:

House Prices - Advanced Regression Techniques | Kaggle

  

2.2 实现代码

!pip install pandas
!pip install git+https://github.com/d2l-ai/d2l-zh@release  # installing d2l
!pip install matplotlib==3.0.0%matplotlib inline
import numpy as np
import pandas as pd
import torch
from torch import nn
from d2l import torch as d2ltrain_data = pd.read_csv('/content/drive/MyDrive/data/house-prices-advanced-regression-techniques/train.csv')
test_data = pd.read_csv('/content/drive/MyDrive/data/house-prices-advanced-regression-techniques/test.csv')#print(train_data.shape)
#print(test_data.shape)
#print(train_data.iloc[0:4,[0,1,2,3,-3,-2,-1]])
#print(test_data.iloc[0:4,[0,1,2,3,-3,-2,-1]])all_features = pd.concat((train_data.iloc[:,1:-1],test_data.iloc[:,1:]))
#print(all_features.shape)# 若无法获得测试数据,则可根据训练数据计算均值和标准差
numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index
all_features[numeric_features] = all_features[numeric_features].apply(lambda x: (x-x.mean()) / (x.std()))
# 在标准化数据之后,所有均值消失,因此我们可以将缺失值设置为0
all_features[numeric_features] = all_features[numeric_features].fillna(0)#处理离散值 
#根据独热编码,如果“MSZoning”的原始值为“RL”, 则:“MSZoning_RL”为1,“MSZoning_RM”为0
# “Dummy_na=True”将“na”(缺失值)视为有效的特征值,并为其创建指示符特征
all_features = pd.get_dummies(all_features,dummy_na=True)
all_features.shape#这里的列数变多了 因为离散值的每一列都会变成很多列 每个数值为true的情况
#print(all_features.iloc[0:4,[-4,-3,-2,-1]])n_train = train_data.shape[0]#得到训练数据的个数
train_features = torch.tensor(all_features[:n_train].values,dtype=torch.float32)
test_features = torch.tensor(all_features[n_train:].values,dtype=torch.float32)
train_labels = torch.tensor(train_data.SalePrice.values.reshape(-1,1),dtype=torch.float32)loss = nn.MSELoss()
in_features = train_features.shape[1]#特征的个数def get_net():#net = nn.Sequential(nn.Linear(in_features,1)) 线性结构net = nn.Sequential(nn.Linear(in_features,128),nn.ReLU(),nn.Linear(128, 1))# 两层MLPreturn netdef log_rmse(net,features,labels):# 为了在取对数时进一步稳定该值,将小于1的值设置为1clipped_preds = torch.clamp(net(features),1,float('inf'))rmse = torch.sqrt(loss(torch.log(clipped_preds),torch.log(labels)))return rmse.item()def train(net,train_features,train_labels,test_features,test_labels,num_epochs,lr,weight_decay,batch_size):train_ls,test_ls = [],[]train_iter = d2l.load_array((train_features,train_labels),batch_size)# 这里使用的是Adam优化算法optimizer = torch.optim.Adam(net.parameters(),lr=lr,weight_decay=weight_decay)for epoch in range(num_epochs):for X, y in train_iter:optimizer.zero_grad()l = loss(net(X),y)l.backward()optimizer.step()train_ls.append(log_rmse(net,train_features,train_labels))if test_labels is not None:test_ls.append(log_rmse(net,test_features,test_labels))return train_ls, test_lsdef get_k_fold_data(k, i, X, y):assert k > 1fold_size = X.shape[0] // kX_train, y_train = None, Nonefor j in range(k):idx = slice(j * fold_size, (j + 1) * fold_size)X_part, y_part = X[idx, :], y[idx]if j == i:X_valid, y_valid = X_part, y_partelif X_train is None:X_train, y_train = X_part, y_partelse:X_train = torch.cat([X_train, X_part], 0)y_train = torch.cat([y_train, y_part], 0)return X_train, y_train, X_valid, y_validdef k_fold(k, X_train, y_train, num_epochs, learning_rate, weight_decay,batch_size):train_l_sum, valid_l_sum = 0, 0for i in range(k):data = get_k_fold_data(k, i, X_train, y_train)net = get_net()train_ls, valid_ls = train(net, *data, num_epochs, learning_rate,weight_decay, batch_size)train_l_sum += train_ls[-1]valid_l_sum += valid_ls[-1]if i == 0:d2l.plot(list(range(1, num_epochs + 1)), [train_ls, valid_ls],xlabel='epoch', ylabel='rmse', xlim=[1, num_epochs],legend=['train', 'valid'], yscale='log')print(f'折{i + 1},训练log rmse{float(train_ls[-1]):f}, 'f'验证log rmse{float(valid_ls[-1]):f}')return train_l_sum / k, valid_l_sum / kk,num_epochs,lr,weight_decay,batch_size = 4,300,4,0,40
train_l, valid_l = k_fold(k, train_features,train_labels,num_epochs,lr,weight_decay,batch_size)
print(f'{k}-折: 平均训练log rmse: {float(train_l):f}, 'f'平均验证log rmse: {float(valid_l):f}')

运行结果: 

2.3 提交预测

def train_and_pred(train_features, test_features, train_labels, test_data,num_epochs, lr, weight_decay, batch_size):net = get_net()train_ls, _ = train(net, train_features, train_labels, None, None,num_epochs, lr, weight_decay, batch_size)d2l.plot(np.arange(1, num_epochs + 1), [train_ls], xlabel='epoch',ylabel='log rmse', xlim=[1, num_epochs], yscale='log')print(f'训练log rmse:{float(train_ls[-1]):f}')# 将网络应用于测试集。preds = net(test_features).detach().numpy()# 将其重新格式化以导出到Kaggletest_data['SalePrice'] = pd.Series(preds.reshape(1, -1)[0])submission = pd.concat([test_data['Id'], test_data['SalePrice']], axis=1)submission.to_csv('submission.csv', index=False)k,num_epochs,lr,weight_decay,batch_size = 4,300,4,0,40
train_and_pred(train_features, test_features, train_labels, test_data,num_epochs, lr, weight_decay, batch_size)

 运行结果:

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

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

相关文章

数据正态分布化 + 基于回归算法的房价预测(含python代码)

本文用到的美国房屋数据&#xff0c;数据介绍详见我的上一篇文章&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1wrkzFF87A_Emgid_s7K3aA提取码&#xff1a;2j77 内含两个文件&#xff1a; data_train.csv&#xff1a;训练集数据&#xff0c;包含房价等81个指标&…

Kaggle--房价预测

房价预测 目录 一、认识数据二、定性分析 2.1 属性的意义2.2 属性分析 三、缺失值处理 3.1 缺失值举例3.2 缺失值统计3.3 填充缺失值3.4 格式转换 四、特征分析 4.1 房价分析4.2 房价属性的关系4.3 相关性4.5 特征选取 五、回归前的准备 5.1 特征向量化5.2 测试集预处理 六、回…

基于python的房价可视化预测系统

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86774405 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86774405 基于python实现的房价的可视化预测系统 目录 面向用户(买房者、卖房者) 1 面向开发者&#xff08;数据挖…

chatgpt赋能python:Python抓取数据:从入门到精通

Python抓取数据&#xff1a;从入门到精通 如果你是一名数据分析师或者工程师&#xff0c;那么你一定要学会使用Python抓取数据。Python是一门简单易学、功能强大的编程语言&#xff0c;它具有丰富的第三方库和工具&#xff0c;使得数据抓取变得非常简单。 本篇文章将从入门到…

chatgpt赋能python:Python抓取网络数据的终极指南

Python抓取网络数据的终极指南 随着互联网的迅速发展&#xff0c;抓取网络数据成为了许多公司和个人用Python进行数据分析、机器学习等任务不可或缺的技能。本文将介绍如何使用Python抓取网络数据。 什么是网络抓取&#xff1f; 网络抓取是指通过网络爬虫程序&#xff0c;自…

chatgpt赋能python:Python如何获取数据:从基础到实战

Python 如何获取数据&#xff1a;从基础到实战 Python 是数据科学、机器学习领域的重要工具之一&#xff0c;如何获取数据是使用 Python 的重要一步。在本文中&#xff0c;我们将介绍从基础到实战 Python 如何获取数据。 1. 爬虫 1.1 爬虫的作用 爬虫是一种自动获取网站信息…

富人越富,穷人越穷,我为什么反对PoS

作者 | Hugo Nguyen 编译 | Guoxi 据摩根士丹利年初报告&#xff0c;2017年比特币挖消耗的电力与中东国家卡塔尔年耗电相当&#xff0c;预计2018年的电力需求可能会达到2017年的三倍以上。 大量的电力消耗也带来了很多争议&#xff0c;很多人都尝试在保证安全性的前提下改进共…

低成本开源聊天机器人Vicuna:可达到ChatGPT/Bard 90%以上水平

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013) 大型语言模型 (LLM) 的快速发展彻底改变了聊天机器人系统&#xff0c;从而实现了前所未有的智能水平&#xff0c;譬如 OpenAI 的 ChatGPT。但 ChatGPT 的训练和架构细节仍不清楚&#xff0c;阻碍了该领域的研究和开源…

看看你经常是穷人的思维还是富人的思维:

1、自我认知 穷人&#xff1a;很少想到如何去赚钱和如何才能赚到钱&#xff0c;认为自己一辈子就该这样&#xff0c;不相信会有什么改变。 富人&#xff1a;骨子里就深信自己生下来不是要做穷人&#xff0c;而是要做富人&#xff0c;他有强烈的赚钱意识&#xff0c;这也是他血液…

如何解决电脑所有浏览器都访问不了,但是微信qq都能上的问题

微信能上,但是浏览器用不了, 什么原因呢,一开始以为是学校检测到自己的路由器了,然后开始疯狂倒腾路由器,不断重启,不断重置密码,后来发现都不起作用....................... 从一开始自己就没有想到是配置的问题,因为浏览器是突然就不能用的,自己又没动过电脑的设置,避开了这…

网络正常,qq、微信等其他能正常使用但浏览器无法打开网页

最近遇到电脑网络正常,除了所有浏览器(360、ie、chrome、搜狗等等)无法打开网页,qq、微信以及爱奇艺等其他连网软件都可以正常使用。 如图: 这样的原因一般是你之前使用了代理服务器了,比如使用电脑开wifi、墙了。之后电脑没有自动修改回来,所以才导致这样。 解决方法…

Chrome无法访问网页(在此情况下,Firefox可以访问网页,QQ可以上网)

Chrome无法访问网页 已尝试以下方法&#xff1a; 重置Chrome&#xff0c;恢复原始设置&#xff08;有些插件可能会导致无法正常打开网页&#xff0c;类似各种梯子&#xff09;&#xff0c;无效在cmd上使用netsh winsock reset,重启电脑&#xff0c;无效使用QQ管家修复功能&am…

qq、微信能打开,网页打不开的解决办法。

昨天下载了VS2022之后。就一直打不开B站&#xff0c;坚信是我自己的我问题。今早还打不开&#xff0c;然后搜了很多办法&#xff0c;原理是那个原理&#xff0c;但是奈何无法成功实践&#xff0c;请教了实验室同学后&#xff0c;终于解决。具体流程如下&#xff1a; 我是 win1…

电脑能打开微信,但是访问不了百度,打不开网页,打不开浏览器!

电脑能打开微信&#xff0c;但是访问不了百度&#xff0c;打不开网页&#xff0c;打不开浏览器&#xff01; 返回导航页问题现象&#xff1a;解决方案&#xff1a;方案一&#xff1a;方案二&#xff1a; 返回导航页 返回导航页 问题现象&#xff1a; 电脑能打开微信&#xff…

QQ、微信可以正常访问通讯,浏览器无法打开网页

问题描述 电脑网络异常&#xff0c;除了浏览器&#xff08;360、chrome、搜狗等等&#xff09;无法打开网页&#xff0c;qq、微信等其他连网软件都可以正常使用。 问题分析 出现这样的原因一般是之前设置了代理服务器&#xff0c;后续没有关闭&#xff0c;导致浏览器还是走代…

大模型新势力:IDEA研究院张家兴入局创业,沈向洋任顾问,首轮估值20亿

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 大模型创业江湖&#xff0c;又来了两位重磅大牛。 张家兴&#xff0c;粤港澳大湾区数字经济研究院&#xff08;IDEA研究院&#xff09;讲席科学家、认知计算与自然语言中心负责人&#xff0c;被曝已经启动了创业项目&#xff0c;而他站…

大模型新势力入局:IDEA研究院首席科学家创业,沈向洋院士任顾问,首轮估值20亿...

来源&#xff1a;量子位 大模型创业江湖&#xff0c;又来了两位重磅大牛。 张家兴&#xff0c;粤港澳大湾区数字经济研究院&#xff08;IDEA研究院&#xff09;讲席科学家、认知计算与自然语言中心负责人&#xff0c;被曝已经启动了创业项目&#xff0c;而他站在他身后&#xf…

预计欧元近期将“绝境大反攻”

纽约汇市11日&#xff0c;美元全线下滑&#xff0c;兑欧元和日圆触及七周低点&#xff0c;因避险需求降温&#xff0c;美元在稳步走强数月后投资人开始在年底前锁定获利。 美元兑其他主要货币自12月起便一路下滑&#xff0c;主要是受年末特有的低水平流动性以及年末清仓操作影响…

彻底弄懂 https 原理本质(三)加密漏洞

一、https加密&#x1f510;过程&#xff0c;上期知识回顾 小明&#x1f466;和小花&#x1f467;为了安全高效的发情书&#xff0c;采用对称加密方式。聪明的老王&#x1f436;盗取对称加密的密钥S&#x1f511; 。小明&#x1f466;想到了非对称加密方式&#xff0c;于是就生…

通过爱情故事,彻底弄懂 https 原理本质(二)加密过程

一、加密知识回顾 单向加密 不可逆&#xff0c;只要输入的内容一样&#xff0c;输出的密文一定是一样的&#xff0c;有任何修改&#xff0c; 产生的密文都是不同的。例如&#xff0c;md5。 对称加密 加密和解密使用同一把密钥&#xff0c;加密解密速度特别快。例如&#xff0c;…