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

时间:2020-02-17 21:11:36

标签: python machine-learning

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

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]

1 个答案:

答案 0 :(得分:0)

熊猫数据帧是可变的。 从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]
相关问题