你好,我独热编码后也是330个特征,请问你现在解决了吗?到底是什么原因导致少了一个特征啊
你好,请问330的问题怎么解决啊,我也少一个特征
我也是k
,听说是有些版本下none会被当做na缺失值,所以少了特征为none的独热编码,但不知道怎么解决呜呜呜
找到解决方案了,在train.csv和test.csv文件里去把None全部替换成None_或者None_pea就行了,反正别是None,用ide的查找加全部替换就可以了
要么就是把summary那一列去掉,要么对该列单独使用ordinalencoder(但会引入顺序关系,可能会干扰模型)、要么仔细观察这一列数据,检查是否有价值,如果没有额外的信息价值是可以去掉该列特征的(可以使用互信息查看)。
有没有较好的调参策略,这个感觉还是很难调的。
目前最好的成绩是这样的
loss = nn.MSELoss()
in_features = train_features.shape[1]
def get_net():
net = nn.Sequential(
nn.Linear(in_features,1024),
nn.ReLU(),
nn.Linear(1024,1)
)
return net

增大batch_size可以让loss下降得更平滑,如果batch_size比较大train_loss还是很抖的话,可以尝试降低学习率和惩罚系数
调了又调,终于调出来,线性模型最低到0.14,换成神经网络模型可以再低一些,到0.12697,其它基本没动,lr改为0.01,weight_decay到5,k值自己测过5或者8都差不多,不影响泛化误差的值
不可以,使用one-hot是为了保证类别之间的距离相等;如果使用1、2、3,那么红和蓝之间的距离就变了,而且这样的序号乘上权重的话,2和3还会有额外的放大。
换一台电脑就可以了,现在随便一个便宜的轻薄本都有32G内存,你要真心想学深度学习,就不要吝惜这么一点钱
新版的get_dummies默认返回bool类型,需要在get_dummies里设置dtype
我在运行代码时遇到了相似的问题,报错
...
TypeError: Cannot perform reduction 'mean' with string dtype
使用 print(all_features.iloc[:, 0:10].dtypes) 检查原先代码中筛选数值型数据的代码,结果为
MSSubClass int64
MSZoning str
LotFrontage float64
LotArea int64
Street str
Alley str
LotShape str
LandContour str
Utilities str
LotConfig str
这段代码并未成功筛除 MSZoning 等 str 类型的数据,猜测问题可能是 pandas 的新版本与旧版本在数据类型上使用 str 还是 object 有区别,将原代码中 numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index 修改为 numeric_features = all_features.dtypes[all_features.dtypes != 'str'].index
我还注意到 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.
这可能是因为在 all_features = pd.get_dummies(all_features, dummy_na=True) 转化独热编码时, True / False 的 bool 值被认为是 object 类型。解决方法是修改all_features = pd.get_dummies(all_features, dummy_na=True) 为all_features = pd.get_dummies(all_features, dummy_na=True, dtype=int)
在我的机器上,进行这些修改后,代码可以正常运行。(我无法正常使用 d2l 库,所以我修改了代码里一些引用 d2l 库的地方,这些修改理论上不会产生影响)

