AWS Sagemaker | как тренировать текстовые данные | Для классификации билетов - PullRequest
0 голосов
/ 29 августа 2018

Я новичок в Sagemaker и не знаю, как классифицировать ввод текста в AWS sagemaker,

Предположим, у меня есть Dataframe с двумя полями, такими как 'Ticket' и 'Category', оба являются текстовым вводом, теперь я хочу разделить его на тестовый набор и набор тренировок и загрузить их в модель обучения Sagemaker.

X_train, X_test, y_train, y_test = model_selection.train_test_split(fewRecords['Ticket'],fewRecords['Category'])

Теперь, когда я хочу выполнить извлечение функции TD-IDF, а затем преобразовать его в числовое значение, выполните эту операцию

tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000)
tfidf_vect.fit(fewRecords['Category'])
xtrain_tfidf =  tfidf_vect.transform(X_train)
xvalid_tfidf =  tfidf_vect.transform(X_test)

Когда я хочу загрузить модель в Sagemaker, чтобы я мог выполнить следующую операцию, как

buf = io.BytesIO()
smac.write_numpy_to_dense_tensor(buf, xtrain_tfidf, y_train)
buf.seek(0)

Я получаю эту ошибку

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-36-8055e6cdbf34> in <module>()
      1 buf = io.BytesIO()
----> 2 smac.write_numpy_to_dense_tensor(buf, xtrain_tfidf, y_train)
      3 buf.seek(0)

~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/amazon/common.py in write_numpy_to_dense_tensor(file, array, labels)
     98             raise ValueError("Label shape {} not compatible with array shape {}".format(
     99                              labels.shape, array.shape))
--> 100         resolved_label_type = _resolve_type(labels.dtype)
    101     resolved_type = _resolve_type(array.dtype)
    102 

~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/amazon/common.py in _resolve_type(dtype)
    205     elif dtype == np.dtype('float32'):
    206         return 'Float32'
--> 207     raise ValueError('Unsupported dtype {} on array'.format(dtype))

ValueError: Unsupported dtype object on array

Кроме этого исключения, я не уверен, что это правильный путь, поскольку TfidfVectorizer преобразует серию в матрицу.

Код предсказывает нормально на моей локальной машине, но не уверен, как сделать то же самое на Sagemaker. Все примеры, упомянутые там, слишком длинные и не для человека, который все еще достиг SciKit Learn

1 Ответ

0 голосов
/ 29 августа 2018

Вывод TfidfVectorizer представляет собой скудную разреженную матрицу, а не простой массив с нулевыми значениями.

Так что либо используйте другую функцию, например:

write_spmatrix_to_sparse_tensor

"" "Записывает скудную разреженную матрицу в разреженный тензор" ""

Подробнее см. в этом выпуске .

ИЛИ сначала преобразуйте выходные данные TfidfVectorizer в плотный массив Numpy, а затем используйте указанный выше код

xtrain_tfidf =  tfidf_vect.transform(X_train).toarray()   
buf = io.BytesIO()
smac.write_numpy_to_dense_tensor(buf, xtrain_tfidf, y_train)
...
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...