Получил ошибку ValueError: Ожидаемый 2D-массив, вместо этого получил 1D-массив при передаче данных моего изображения в классификатор дерева решений. - PullRequest
0 голосов
/ 13 апреля 2020
from sklearn import 
from matplotlib import image
import os
features=list()
##this loops are to load images as arrays in to features from the folders on my desktop
for f in os.listdir(r'C:\Users\Sriram\Desktop\300'):
    if f.endswith('.png'):
        try:

            pass
for f in os.listdir(r'C:\Users\Sriram\Desktop\300n'):
    if f.endswith('.png'):
        try:
            img=image.imread(r'C:\Users\Sriram\Desktop\300n'+f)
            features.append(img)
        except:
            pass
l=[0]
p=[1]
print("hello")
## there are onlt two classes if images each 20 hence i created targets ast list of 40 elements first
##for class 1 and other for 2
targets=l*20+p*20
##thi is where i get error
clf=tree.DecisionTreeClassifier()
clf=clf.fit(features,targets)

Traceback (последний вызов был последним): файл "C: / Users / Sriram / AppData / Local / Programs / Python / Python38-32 / ML2.py", строка 24 , в clf = clf.fit (функции, цели) Файл "C: \ Users \ Sriram \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sklearn \ tree_classes.py", строка 873 , в соответствии super (). fit (файл "C: \ Users \ Sriram \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sklearn \ tree_classes.py", строка 149, в соответствии X = check_array (X, dtype = DTYPE, accept_sparse = "cs c") Файл "C: \ Users \ Sriram \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sklearn \ utils \ validation.py ", строка 552, в check_array повысить ValueError (ValueError: Ожидаемый 2D-массив, вместо этого получил 1D-массив: array = []. Измените ваши данные либо с помощью array.reshape (-1, 1), если ваши данные имеют одна функция или array.reshape (1, -1), если она содержит один образец.

Я пытался загрузить некоторые изображения с моего рабочего стола, используя matplotlib., которые включают только два класса изображений а затем я хочу обучить decisiontreeclassifier, и когда я пытаюсь получить доступ к методу, используя эти функции, я получил выше ошибка

1 Ответ

0 голосов
/ 13 апреля 2020
* * * * * * * * * * * Подходящий метод предполагает, что входная форма будет (n_samples, n_features). Если у вас есть одномерный массив, вам необходимо преобразовать его в двухмерный массив перед подгонкой к модели. Вы можете использовать метод изменения формы, как указано в ошибке.
clf=clf.fit(features.reshape(-1,1),targets)
...