机器学习实战【房价预测问题】(附python代码)

文章讲述了作者在实现房价预测模型时遇到的问题,包括k折交叉验证的代码错误(fold_size的计算),RMSE出现NaN的结果,以及提交CSV文件的错误。作者通过对比和调试代码找到了问题所在,修正了交叉验证的分块方法并解决了其他小问题,最终改善了模型的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题记:今天记录一篇错误代码(暂未找到错误原因),网上的教程对于房价预测问题的套路都差不多于是参照了其中一篇,完成了几乎一样的代码,但是首先是k折交叉验证的问题,其次是预测结果问题。

更新:重新手敲了一遍代码发现还是有问题,于是有猜测肯定因为自己的惯性思维导致的问题,自己可能很难发现了,所以找了一份网上的代码直接复制发现能跑,又校对好几遍最终发现原来问题在交叉验证上。可恶啊~

  1. 问题:rmse出现nan的原因
    解答:k折交叉验证的代码粗心写错了(fold_size = x.shape[0]//k),我以为//k是注释,每次自己手写的时候都把它删掉了。
  2. 问题:to_csv(‘submission.csv’)
    解答:实际上如果没有用d2l模块的话,这里根本不会报错。
  3. 问题:懒得下载d2l模块
    解答:用自定义的函数load_array代替,方案可行,网上有教程。而且注意是小写的L不是数字1
  4. 问题:kaggle的在线平台
    好难用啊,有时候会出现莫名的问题,新建一个notebook可能就好了。
  5. 问题:submission.csv
    rmse 得分0.17294
# -*- coding: utf-8 -*-
"""
@Time : 2023/4/4 14:02
@Auth : zyt
@File :02regression.py
@IDE :PyCharm
@Motto:ABC(Always Be Coding)
"""

'''
问题描述:波士顿房价预测问题
'''
import pandas as pd
from torch.utils import data
import torch.nn as nn
import torch

def load_array(data_arrays, batch_size, is_train=False):
    """构造一个PyTorch数据迭代器。"""
    dataset = data.TensorDataset(*data_arrays)
    return data.DataLoader(dataset, batch_size, shuffle=is_train)

def get_net(in_features):
    net = nn.Sequential(nn.Linear(in_features,1))
    return net

def log_rmse(net,features,labels):
    clipped_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,learning_rate,weight_decay,batch_size):
    train_ls,test_ls=[],[]
    train_iter = load_array((train_features,train_labels)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值