我是机器学习的入门者,所以我尝试了kaggle的MINST。我真的对事情的运作方式感到好奇,因为我无法在线找到答案,因此认为在这里发表第一篇文章将是一个好主意。
我在keras上使用CNN做了一个简单的模型。这就是Google colab输出的预测。
Ynew =model.predict_classes(test_data)
Ynew.shape
(28000,)
Ynew
array([2,0,9,...,3,9,2])
现在,我尝试从中制作一个DataFrame,但我真的不明白为什么我可以以一种方式而不是另一种方式制作它。
这个很好用,我得到一张28000x2的桌子:
labels = ["ImageId","Label"]
col= list(range(1,28001))
submission=pd.DataFrame({"ImageId":col,"Label":Ynew})
但是在这一行中,我只能在一排里收拾一切:
submission2=pd.DataFrame(data=[[col,Ynew]],columns=labels)
两种方法都不能相同吗? 希望这篇文章还不错,谢谢!!
答案 0 :(得分:0)
submission2=pd.DataFrame(data=Ynew, index=col, columns=labels)
答案 1 :(得分:0)
可以通过以下方式创建数据框:
参考:pandas-docs
在您的情况下,Ynew
是一维数组,loc
是列表。恕我直言,您只能像在第一种方法中所做的那样,根据Ynew
和loc
的字典创建数据框。
对于第二种方法,您需要使Ynew
和loc
成为2D数组。
d = np.vstack([loc,Ynew]).T # you will have (28000,2)
submission2=pd.DataFrame(data = d, columns=labels)