У меня есть реализация алгоритма персептрона, который работает в соответствии с моделью мешков слов, определяя серию весов для разделения двух векторов признаков.Как реализовать тест персептрона
Пример:
Document 1 = ["I", "am", "awesome"]
Document 2 = ["I", "am", "great", "great"]
Словарь:
["I", "am", "awesome", "great"]
Так документы как вектор будет выглядеть следующим образом:
Document 1 = [1, 1, 1, 0]
Document 2 = [1, 1, 0, 2]
Алгоритм затем узнает граничное уравнение Решение, т.е. :
feature_0 * weight_0 +
feature_1 * weight_1 +
feature_2 * weight_2 +
feature_3 * weight_3 +
bias
Теперь у меня есть тестовый набор, который в формате очень похож на набор тренировок, изображенный выше. Что такое psuedocode для проверки этих значений в отношении моего решения граничного уравнения и присвоения им меток?
Я предполагаю, что это что-то вроде (псевдокод):
For each word in the test set
if that word exists in the global dict
value = the frequency of that word * the learned weight
if value >= 0
return 1
else
return -1
Но я хочу, чтобы захватить класс всего вектора признаков, а не только одно слово, так что я предполагаю, что это должно быть суммирование?
Я думаю, что получил, не могли бы вы взглянуть на мой код, чтобы убедиться, согласны ли вы? Это на моей странице [github] (https://github.com/h1395010/perceptron/blob/master/src/file_dict_createur/Perceptron.java) Я прокомментировал, где я делаю тест. –
Кажется правильным, но не принимайте это как должное, так как я немного устал atm :) Если все правильно, вы можете установить test = train set и получить почти 100% с правильными параметрами. – runDOSrun
Итак, я могу переключить тестовый набор и набор тренировок в этом классе персептрона? я думаю, если бы я должен был сделать это, мне пришлось бы инициализировать мои веса до нуля, а не случайное число, не так ли? и тогда я должен получить тот же результат? –