Использование Turi для создания простой текстовой классификации
Чтобы связаться с Тури, я пытаюсь создать модель, способную отличать строки, состоящие из символов, и строки, состоящие из чисел. У меня есть CSV-файл с данными тренировок. Каждая строка состоит из двух записей, строки и индикатора, является ли эта строка числовой или плоской строкой.
String, isNumber
bvmuuflo , 0
71047015 , 1
Мой Python-Script для генерации модели выглядит так:
import graphlab as gl
data = gl.SFrame('data.csv')
model = gl.classifier.create(data, target="isNumber", features=["String"])
Это отлично работает. Но я понятия не имею, как использовать модель, чтобы проверить, например, является ли "qwerty" строкой или числом. Я пытаюсь использовать model.classify(...)
API-вызовы. Но два звонка
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 ответ
Поскольку модель имеет только один столбец для обучения, она сможет идентифицировать строки, которые она уже видела, но не сможет идентифицировать те, которые она не видела. Я предполагаю, что.509 - это процент вашего ввода, который является строкой, поэтому он просто отвечает этим на все, что не видел раньше.
Это, очевидно, игрушечный пример, но если вы хотите, чтобы он работал, я бы использовал что-то вроде пакета слов, но для букв. Сделайте 36 столбцов с заголовками a,b,c...z,0,1...9 и поместите счетчик каждого символа в строке для каждой строки. Таким образом, модель будет рассматривать отдельные буквы как вероятность для класса, а не для строки в целом.