Python - классификатор и последовательность соответствия очков - PullRequest
0 голосов
/ 06 июня 2018

Я пишу программу на Python, в которой на основе заданного набора данных баллов (т. Е. Человек 1 имеет баллы в различных тестах 3,15,6,7,4,3 и поэтому является типом C), сравнивает новый набор баллов для человека n и определяет тип (AC) для этого человека.Для классификации я думал о том, чтобы пойти по пути машинного обучения, но я также хотел бы определить идентификатор человека, который ближе всего подходит к человеку n и который является наименее похожим (баллы, скорее всего, не будут такими же, янадо найти ближайший).Я думал об использовании расширения Levenshtein Python C или SequenceMatcher, есть ли у кого-нибудь какие-либо предложения или советы о том, как я могу провести как классификацию, так и сопоставление, пожалуйста?Заранее спасибо

1 Ответ

0 голосов
/ 06 июня 2018

Исходя из вашего описания, не думайте, что тесты являются последовательностями.Находятся ли тесты в определенном порядке, и порядок важен для ответа на ваш вопрос?

Предполагая, что они не упорядочены или порядок не важен, вы можете рассматривать каждый тест как измерение в векторном пространстве, например:

            test1   test2   test3   class
person1       3       0       1       A
person2       5       7       9       C

Для задачи классификации вы можете попробовать контролируемые модели обучения, такие как линейная регрессия или случайный лес.

Чтобы найти ближайшего соседа, просто вычислите косинусное сходство между каждой парой людей,Счет 1 - similarity можно использовать для поиска самого дальнего человека.Альтернативы косинусному подобию включают евклидово расстояние.

Вот простой код Python для вычисления косинусного сходства:

def dot(v1, v2):
    return sum([x1*x2 for x1, x2 in zip(v1, v2)])

p1 = [3, 0, 1]
p2 = [5, 7, 9]
cosine = dot(p1, p2) / ((dot(p1, p1) ** 0.5) * (dot(p2, p2) ** 0.5))
...