Turi Create - используйте dropna () для удаления строк - PullRequest
0 голосов
/ 21 мая 2018

У меня проблемы с Apple Turi Create и классификатором изображений.Я успешно создал модель с 22 категориями.Недавно я добавил еще 5 категорий, и консоль выдает предупреждение об ошибке

Please use dropna() to drop rows with missing target values.

Полный журнал консоли выглядит следующим образом:

[16:30:30] src/nnvm/legacy_json_util.cc:190: Loading symbol saved by previous version v0.8.0. Attempting to upgrade...
[16:30:30] src/nnvm/legacy_json_util.cc:198: Symbol successfully upgraded!
Resizing images...
Performing feature extraction on resized images...
Premature end of JPEG file
Completed  512/1883
Completed 1024/1883
Completed 1536/1883
Completed 1883/1883
PROGRESS: Creating a validation set from 5 percent of training data. This may take a while.
      You can set ``validation_set=None`` to disable validation tracking.

[ERROR] turicreate.toolkits._main: Toolkit error: Target column has missing value.                    
Please use dropna() to drop rows with missing target values.
Traceback (most recent call last):
File "train.py", line 8, in <module>
model = tc.image_classifier.create(train_data, target='label', max_iterations=1000)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/turicreate/toolkits/image_classifier/image_classifier.py", line 132, in create
verbose=verbose)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/turicreate/toolkits/classifier/logistic_classifier.py", line 312, in create
seed=seed)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/turicreate/toolkits/_supervised_learning.py", line 397, in create
options, verbose)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/turicreate/toolkits/_main.py", line 75, in run
raise ToolkitError(str(message))
turicreate.toolkits._main.ToolkitError: Target column has missing value.                    

Please use dropna() to drop rows with missing target values.

Я обновил Тури и coremltools до последних версий, но я не знаю, где мне следует реализовать dropna () в коде.Я нашел только эту ссылку и следовал за кодом.

Это выглядит так:

data.py

import turicreate as tc

image_data = tc.image_analysis.load_images('images', with_path=True)

labels = ['A', 'B', 'C', 'D']

def get_label(path, labels=labels):
  for label in labels:
       if label in path:
           return label

image_data['label'] = image_data['path'].apply(get_label)

#import os
#image_data['label'] = image_data['path'].apply(lambda path:    os.path.dirname(path).split('/')[-1])

image_data.save('boxes.sframe')

image_data.explore()

train.py

import turicreate as tc

data = tc.SFrame('boxes.sframe')
data.dropna()

train_data, test_data = data.random_split(0.8)

model = tc.image_classifier.create(train_data, target='label',    max_iterations=1000)

predictions = model.classify(test_data)

results = model.evaluate(test_data)

print "Accuracy           : %s" % results['accuracy']
print "Confusion Matrix   : \n%s" % results['confusion_matrix']

model.save('boxes.model')

Как мне отбросить все пустые столбцы и строки, пожалуйста?Влияет ли max_iterations = 1000 также на ошибку?

Спасибо за предложения

1 Ответ

0 голосов
/ 21 мая 2018

data.dropna() не сделано на месте, вам нужно написать это: data = data.dropna()
См. Документацию здесь https://apple.github.io/turicreate/docs/api/generated/turicreate.SFrame.dropna.html

...