Python-分数的分类和序列匹配器

Python-分数的分类和序列匹配器,python,machine-learning,pattern-matching,match,classification,Python,Machine Learning,Pattern Matching,Match,Classification,我正在用Python编写一个程序,在这个程序中,根据给定的分数数据集(即,人1在不同测试中的分数为3,15,6,7,4,3,因此是C型),比较人n的一组新分数,并确定此人的类型(a-C)。对于分类,我想沿着机器学习的路线走,但我还想确定与人员n最匹配的人员ID,以及与人员n最不相似的人员ID(分数不太可能相同,我需要找到最接近的)。我正在考虑使用Levenshtein Python C扩展或SequenceMatcher,有人对我如何进行分类和匹配有什么建议吗? 提前感谢根据您的描述,不要认为测

我正在用Python编写一个程序,在这个程序中,根据给定的分数数据集(即,人1在不同测试中的分数为3,15,6,7,4,3,因此是C型),比较人n的一组新分数,并确定此人的类型(a-C)。对于分类,我想沿着机器学习的路线走,但我还想确定与人员n最匹配的人员ID,以及与人员n最不相似的人员ID(分数不太可能相同,我需要找到最接近的)。我正在考虑使用Levenshtein Python C扩展或SequenceMatcher,有人对我如何进行分类和匹配有什么建议吗?
提前感谢

根据您的描述,不要认为测试是顺序的。测试是否按特定顺序进行,并且顺序在回答您的问题时很重要

假设它们没有顺序或顺序不重要,可以将每个测试视为向量空间中的一个维度,例如:

            test1   test2   test3   class
person1       3       0       1       A
person2       5       7       9       C
对于分类问题,您可以尝试使用监督学习模型,如线性回归或随机森林

为了找到最近的邻居,只需计算每对人之间的余弦相似度。分数
1-相似性
可用于查找距离最远的人。余弦相似性的替代方法包括欧几里德距离

下面是计算余弦相似性的简单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))

太好了,谢谢。实施了你的建议,似乎效果很好。