实战 Kaggle 比赛:预测房价

同楼上lifanqie1所说,确实是有些值设定为None后会将其与NA都设定为缺失值,但是不是MasVnrType(没有这个特征),解决方法是加一行all_features.replace('None', 'None_fea', inplace=True)就可以了

1 Like


为什么后面那段会突然地上升?

你可以打印一下all_features的dtype,可以看到大概率是前一步转独热编码的时候它给的是Boolean型而不是int形式的0和1,在转tensor之前自行转化一下就可以:all_features = all_features.astype({col: ‘int’ for col in all_features.select_dtypes(include=[‘bool’]).columns})

2 Likes

为什么我下载数据集报错

AccessDenied

Access Denied

07JRYK4SMH161F5T

wmG3gxeJIKt5qA/g8Vrtz2P030+6AIK8cNAhvDwlJ/bJYq1ukvfE9Sp/ApnCJyL+wIwfd/PFWAI=

print(train_data.shape)

print(test_data.shape)

(1, 1)
(1, 1)

非常感谢,我是新手,使用的pycharm,遇到这个问题,使用你的方法已经解决


最好结果

为什么原本的bool不能用呢,支持的类型不是有bool吗

同意lifanqie1所说,但Naom1的解决方案似乎不太行。确实是MasVnr中有None,pandas在读取csv之后就会把None视作NA,因此用inplace替换无法找到’None’字符串;我的解决方案是:需要在csv源文件中替换None为None_fea,再用panda读取时候改为修改后的文件,就可以了

均值填充在apply之后,是等效的。你可以理解为,本来是均值填充,但是先归一化处理后均值为0,因此后边进行0填充即可。

在看d2l电子版的时候发现一个问题,

这里为什么在计算loss时使用MSE而记录时却用log-rmse呢?为什么不直接使用log-rmse作为损失函数来计算呢?

跟前面老哥一样的参数:

我跑出来的损失还更小哈哈

是不是这个课程有专用的微信讨论群呢?记得之前看到,好像是在v1版本的评论区,现在却关闭了。看到的麻烦发一下

我觉得你说得很有道理,我用log_rmse调出来的参数上传到kaggle实际损失比测试的大,换成mse作损失函数就跟kaggle结果差不多了


0.12328分的参数
num_folds = 5
num_epochs = 300
lr = 0.5
num_hiddens = 512
ReLU
batch_size = 512
weight_decay = 1000

1 Like

train_features = torch.tensor(all_features[:n_train].values,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, uint64, uint32, uint16, uint8, and bool.
object类没被剔除啊,没法转换类型