Я пытаюсь реализовать алгоритм обучения для прогнозирования того, имеет ли изображение целевое значение 1
или 0
. Во-первых, мои целевые значения устанавливаются как так ...Ошибка данных об установке scikit
real = [1] * len(images)
fake = [0] * len(fake_images)
total_target = real + fake
total_target = numpy.array(total_target)
>>> [1 1 1 ... 0 0 0 0]
Следующая преобразовать список изображений в numpy
numpy
массив массивов. Поэтому я хранить каждое изображение как numpy
массив ...
training_set = []
for image in total_images:
im = image.convert("L")
dataset = numpy.asarray(im)
training_set.append(dataset)
training_set = numpy.array(training_set)
Так training_set
держит изображения. Порядок training_set
соответствует порядку total_target
, поэтому первое изображение в training_set
соответствует первому значению в total_target
, которое должно быть 1
в приведенном выше примере.
Далее я выравниваться обучающий набор ...
n_samples = len(training_set)
data = training_set.reshape((n_samples, -1))
Теперь я передаю его в следующий ...
classifier = svm.SVC(gamma=0.001)
classifier.fit(data[:n_samples-1], total_target[:n_samples-1])
я не включил последнего изображения и его соответствующее значение, потому что это значение, которое я хочу предсказать ...
expected = total_target[-1]
predicted = classifier.predict(data[-1])
Когда я запускаю все это, я получаю следующее сообщение об ошибке. ..
Отказ Предупреждение: Передача 1-го массива в качестве устаревших данных в 0.17 и присвоение значения ValueError в 0.19. Измените свои данные либо с помощью X.reshape (-1, 1), если у ваших данных есть одна функция или X.resape (1, -1), если она содержит один образец. DeprecationWarning)
ОК, так что по ошибке он выглядит как мой total_target
в неправильном формате, поэтому я добавляю следующее ...
total_target = numpy.array(total_target).reshape(-1, 1)
Я бегу, и теперь я получаю следующее ошибки
DataConversionWarning: вектор-столбец y был передан, когда ожидался 1d-массив. Измените форму y на (n_samples), например, используя ravel(). y_ = column_or_1d (y, warn = True)
C: \ Users \ Eric \ Anaconda2 \ lib \ site-packages \ sklearn \ utils \ validation.py: 386: DeprecationWarning: передача 1-го массива в качестве устаревших данных в 0.17 и willraise ValueError в 0.19. Измените свои данные либо с помощью X.reshape (-1, 1), если у ваших данных есть одна функция или X.resape (1, -1), если она содержит один образец. DeprecationWarning)
Я попытался с помощью ravel()
на total_target
, но он просто возвращает меня к ошибке раньше. Я думаю, что мое форматирование неверно. Я довольно новичок в массивах numpy
.
'OK, так что по ошибке он выглядит как мой total_target в неправильном формате,' - Нет, scikit- узнайте, что 'data [-1]' является плоским вектором вместо 2d-массива. 'total_target' должен быть плоским вектором, и нет необходимости его изменять. – cel