实战 Kaggle 比赛:预测房价

非常感谢!我找到了另一个解决办法,也分享一下:
!pip install --upgrade matplotlib
似乎是matplotlib版本的问题

我做了测试,是可以的哦

1 Like

你好,我想问一下这段代码要放进哪里呢?我在colab上运行李沐老师的这个notebook,然后找不到d2l.plot在哪里 :sob:

为什么我在数据预处理转换为张量时会显示TypeError: can’t convert np.ndarray of type numpy.object_.的报错,这个报错应该如何解决?是因为我没有GPU的原因吗?

2 Likes

训练和验证的log_rmse都是0.16,提交分数0.57,正常吗?(有可能我submission那里出bug了)

确实是我出bug了,现在修了之后 训练和提交分数都是0.16

我对这部分有些疑问。前面提到,我们真正关心的是相对误差,但是这一段代码显示,训练时使用的损失函数实际上是绝对误差,只是记录loss时记录的是相对误差。这样子是否实际上并没有从相对误差的角度对模型的效果进行提升呢?如果将loss(net(x, y))换成log(rmse(net, x, y)),是否会更合理呢

1 Like

这个房价预测好像只用到了train.csv这个文件,test。csv文件好像没有用到,后面计算验证集的损失也是从train.csv中分出来1/k的,对吗?

问一下各位大佬,李沐老师书里的结果已经到了0.16左右了 为什么还要调参数呢?

因为0.16是很一般的结果。还可以更低。

1 Like

TypeError Traceback (most recent call last)
Cell In[65], line 2
1 n_train = train_data.shape[0]
----> 2 train_features = torch.tensor(all_features[:n_train].values, dtype=torch.float32)
3 test_features = torch.tensor(all_features[n_train:].values, dtype=torch.float32)
4 train_labels = torch.tensor(
5 train_data.SalePrice.values.reshape(-1, 1), dtype=torch.float32)

TypeError: can’t convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.
为什么会出现这样的问题

1 Like

某些ide独热编码时会将数据处理成boolean类型,需要指定处理类型为数值型,如int。尝试这么处理,pd.get_dummies(all_features, dummy_na=True, dtype=int)

3 Likes


为啥不是331,是330啊


wo我也是这个问题,但是独热编码之后我是330个,不是331个。是哪里出问题了呢

某些ide独热编码时会将数据处理成boolean类型,需要指定处理类型为数值型,如int。尝试这么处理,pd.get_dummies(all_features, dummy_na=True, dtype=int) 摘自weiking大佬的回答,亲测有效。




跟着大佬改的参数

我也有一样的疑问,这样修改了之后,记得修改一下rmse函数的返回值,去掉.item(),不然返回的是不包含梯度等信息的float类,需要返回tensor类型的才能调用backward计算梯度

def log_rmse(net,features,labels):
    pred = net(features)
    clamped_pred = torch.clamp(pred,min=1)
    rmse = torch.sqrt(loss(torch.log(clamped_pred),torch.log(labels)))
    return rmse

在下面的代码中,请问这个哈希值是怎么得到的,自己算吗?
DATA_HUB[‘kaggle_house_train’] = ( #@save
DATA_URL + ‘kaggle_house_pred_train.csv’,
‘585e9cc93e70b39160e7921475f9bcd7d31219ce’)


这是什么意思啊

不对,
是换成三列 0,0,1 红 0 ,1,0 是蓝 1,0,0 是绿 所以叫 one-hot编码

没太理解,你说的是房价预测的数据集吗?可是我看get_dummies后的数据集大小只有1.6MB,内存8G的电脑也可以跑起来呀