Как мне изменить список в массив? - PullRequest
0 голосов
/ 03 июля 2019

Как объявить массив в Python?

Здравствуйте, я пытался отформатировать список для моего алгоритма прогнозирования. Однако, когда я пытаюсь предсказать, я получаю ошибку:

Reshape your data either using array.reshape(-1, 1) if your data has a single 
feature or array.reshape(1, -1) if it contains a single sample.

Итак, когда я пытаюсь изменить форму массива с помощью .reshape (1, -1) [Как мне говорит ошибка], я получаю, что у объекта 'list' нет атрибута 'reshape', Тем не менее, согласно этому посту, мой список является массивом, и должен быть в состоянии сделать это.

Кроме того, я попытался использовать numpy, чтобы сделать его массивом (или транспонировать его). Я получил ошибку: ValueError: setting an array element with a sequence.

Мой код такой:

for i in range(len(best.indi)):
    data.append(best.features[best.indi[i]])
for i in data:
  try:
    value = i[-1:]
    prediction_data.append(value[0])
  except:
    prediction_data.append(i)

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split as tts
import numpy as np

knn = KNeighborsClassifier(n_neighbors=best.neighbors)

knn.fit(np.transpose(data), best.y)

prediction = knn.predict(np.transpose(prediction_data))


print(prediction)

Функция try просматривает данные (которые представляют собой комбинацию из 1 повторяющихся списков и чисел) и создает список, представляющий собой только набор чисел.

https://repl.it/@JacksonEnnis/KNN-Final

Итак, повторимся, как вы преобразуете данные в формат, который Scikit распознает для прогнозов?

1 Ответ

1 голос
/ 03 июля 2019

В примере, который вы показали, вы добавляете данные в список.Чтобы использовать reshape, вы должны преобразовать их в массив numpy.Убедитесь, что вы проверили тип вашей переменной перед вызовом reshape.

import numpy as np

data = []
for i in range(10):
    data.append(i)

print(type(data))

Вывод: <class 'list'>

data = np.array(data) # Convert the list to numpy array
print(type(data))

Вывод: <class 'numpy.ndarray'>

Теперь выможно изменить, как вам нравится.

print(data.reshape(1,-1))

Вывод: [[0 1 2 3 4 5 6 7 8 9]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...