pd.DataFrame из массива 2 разными способами - PullRequest
0 голосов
/ 29 сентября 2018

Я начинаю с машинного обучения, поэтому я попробовал МИНСТ из kaggle.Мне действительно любопытно, как все работает, поэтому, так как я не мог найти ответ в Интернете, подумал, что было бы хорошей идеей сделать мой первый пост здесь.

Я сделал простую модель с CNN на керасе.Это будет предсказание с выводом из Google Colab.

Ynew =model.predict_classes(test_data)
Ynew.shape

(28000,)

Ynew

массив ([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)

Разве оба способа не должны работать одинаково?Надеюсь, пост был не так уж и плох, и спасибо !!

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Кадр данных может быть создан из:

  1. диктовок из 1D-ndarrays, списков, диктов или серий
  2. 2-D numpy.ndarray
  3. Структурированный или записанный ndarray
  4. A Series
  5. Другой DataFrame

Ref: pandas-docs

В вашем случаеYnew - это 1-мерный массив, а loc - список.ИМХО, вы можете создавать только фреймы данных из dict Ynew и loc как то, что вы сделали в 1-м методе.

Для второго метода вам нужно сделать Ynew и loc стать2D-ndarray.

d = np.vstack([loc,Ynew]).T  # you will have (28000,2)
submission2=pd.DataFrame(data = d, columns=labels)
0 голосов
/ 29 сентября 2018
submission2=pd.DataFrame(data=Ynew, index=col, columns=labels)
...