我有 2 个数据(数据训练和数据测试(,其中 id、字母和答案作为列:
import pandas as pd
datatrain = pd.DataFrame([[1,'A','Yes'],[2,'B','No'],[3,'C','Yes'],[4,'A','No'],[5,'B','Yes']], columns=['id','letter','answer'])
datatest = pd.DataFrame([[1,'B',''],[2,'B',''],[3,'B','']], columns=['id','letter','answer'])
当我使用 zip 迭代它们时...
for (no_train, data_train), (no_test, data_test) in zip(datatrain.groupby('letter'),datatest.groupby('letter')):
print(data_train.values)
print(data_test.values)
// bnb.fit(data_train['id','letter'], data_train['answer'])
// pred = bnb.predict(data_test['id','letter'])
print(data_test.values( 按预期工作,但我只会在 print(data_train.values 上得到 groupby 的第一个字母(,我想打印所有 groupby 字母data_train。
打印结果(data_train.值(:
[[1,'A','Yes']
[4,'A','No']]
打印的预期结果(data_train.值(:
[[1,'A','Yes']
[4,'A','No']]
[[2,'B','No']
[5,'B','Yes']]
[[3,'C','Yes']]
如何使用zip迭代二维数组的2个数据?我想同时实现朴素贝叶斯分类器,这样我就不能在不同的循环中分离数据训练和数据测试,或者在数据训练循环中嵌套数据测试循环
如果您希望data_train所有 3 种字母类型,请确保将这 3 种类型全部包含在数据测试。
例如,这应该给出您的预期结果
import pandas as pd
datatrain = pd.DataFrame([[1,'A','Yes'],[2,'B','No'],[3,'C','Yes'],[4,'A','No'],[5,'B','Yes']], columns=['id','letter','answer'])
datatest = pd.DataFrame([[1,'B','xx'],[2,'B','xx'],[3,'B','xx'], [3,'A','yy'], [3,'C','yy']], columns=['id','letter','answer'])
for (no_train, data_train), (no_test, data_test) in zip(datatrain.groupby('letter'), datatest.groupby('letter')):
print(data_train.values)
结果:
[[1 'A' 'Yes']
[4 'A' 'No']]
[[2 'B' 'No']
[5 'B' 'Yes']]
[[3 'C' 'Yes']]
发生这种情况是因为 zip(( 的工作方式。