“总计用于数据集”:不适用于训练和测试数据集

问题描述 投票:0回答:1

我的“总计数据集”仅适用于我的测试集,而不会更改我的训练集上的数据点。有人可以帮忙解释一下吗?

total=[train,test]
for dataset in total:
    dataset.loc[dataset['Fare'] <= 18, 'Fare'] = 9
    dataset.loc[(dataset['Fare'] > 18) & (dataset['Fare'] <= 37.0042), 'Fare'] = 11
    dataset.loc[(dataset['Fare'] > 37.0042) & (dataset['Fare'] <= 63.3583), 'Fare'] = 22
    dataset.loc[(dataset['Fare'] > 63.3583) & (dataset['Fare'] <= 93.5), 'Fare'] = 33
    dataset.loc[(dataset['Fare'] > 93.5) & (dataset['Fare'] <= 120), 'Fare'] = 44
    dataset.loc[(dataset['Fare'] > 120) & (dataset['Fare'] <= 164.8667), 'Fare'] = 55
    dataset.loc[(dataset['Fare'] > 164.8667) & (dataset['Fare'] <= 263), 'Fare'] = 66
    dataset.loc[dataset['Fare'] > 263, 'Fare'] =77
total=[train,test]
python machine-learning
1个回答
0
投票

Pandas数据帧是可变的。从here中读取以下内容:

数据的可变性和复制所有熊猫的数据结构都是可变值(它们包含的值可以更改),但并不总是大小可变。系列的长度不能更改,但是,例如,可以将列插入到DataFrame中。然而,广阔的大多数方法产生新对象并保留输入数据无动于衷。总的来说,我们希望在合理的情况下支持不变性。

您可以如下更改代码:

total=[train,test]
for i in range(2):
    total[i].loc[dataset['Fare'] <= 18, 'Fare'] = 9
    total[i].loc[(dataset['Fare'] > 18) & (dataset['Fare'] <= 37.0042), 'Fare'] = 11
    total[i].loc[(dataset['Fare'] > 37.0042) & (dataset['Fare'] <= 63.3583), 'Fare'] = 22
    total[i].loc[(dataset['Fare'] > 63.3583) & (dataset['Fare'] <= 93.5), 'Fare'] = 33
    total[i].loc[(dataset['Fare'] > 93.5) & (dataset['Fare'] <= 120), 'Fare'] = 44
    total[i].loc[(dataset['Fare'] > 120) & (dataset['Fare'] <= 164.8667), 'Fare'] = 55
    total[i].loc[(dataset['Fare'] > 164.8667) & (dataset['Fare'] <= 263), 'Fare'] = 66
    total[i].loc[dataset['Fare'] > 263, 'Fare'] =77
# no need for this statement! total=[train,test]
热门问题
推荐问题
最新问题