Использование Turi для создания простой текстовой классификации - PullRequest
0 голосов
/ 03 мая 2018

чтобы связаться с Тури Я пытаюсь создать модель, способную отличать строки, состоящие из символов, и строки, состоящие из чисел. У меня есть CSV-файл с данными тренировок. Каждая строка состоит из двух записей, строки и индикатора, является ли эта строка числом или плоской строкой

String, isNumber
bvmuuflo , 0
71047015 , 1

Мой Python-скрипт для генерации модели выглядит так:

import graphlab as gl
data =  gl.SFrame('data.csv')
model = gl.classifier.create(data, target="isNumber", features=["String"])

Это отлично работает. Но я понятия не имею, как использовать модель, чтобы проверить, например, является ли «qwerty» строкой или числом. Я пытаюсь использовать API-вызов model.classify(...). Но два звонка

model.classify(gl.SFrame(["qwertzui"])

и

model.classify(gl.SFrame(["98765432"])

возвращает тот же результат

Columns:
    class   int
    probability float

Rows: 1

Data:
+-------+----------------+
| class |  probability   |
+-------+----------------+
|   1   | 0.509227594584 |
+-------+----------------+
[1 rows x 2 columns]

Очевидно, что в моей программе есть ошибка, но я не могу ее найти. Любая помощь приветствуется!

1 Ответ

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

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

Это, очевидно, игрушечный пример, но если вы хотите, чтобы он работал, я бы использовал что-то вроде пакета слов, но для букв. Сделайте 36 столбцов с заголовками a, b, c ... z, 0,1 ... 9 и поместите счетчик каждого символа в строке для каждой строки. Таким образом, модель будет рассматривать отдельные буквы как вероятность для класса вместо строки в целом.

...