Python-分数的分类和序列匹配器
我正在用Python编写一个程序,在这个程序中,根据给定的分数数据集(即,人1在不同测试中的分数为3,15,6,7,4,3,因此是C型),比较人n的一组新分数,并确定此人的类型(a-C)。对于分类,我想沿着机器学习的路线走,但我还想确定与人员n最匹配的人员ID,以及与人员n最不相似的人员ID(分数不太可能相同,我需要找到最接近的)。我正在考虑使用Levenshtein Python C扩展或SequenceMatcher,有人对我如何进行分类和匹配有什么建议吗?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,有人对我如何进行分类和匹配有什么建议吗? 提前感谢根据您的描述,不要认为测
提前感谢根据您的描述,不要认为测试是顺序的。测试是否按特定顺序进行,并且顺序在回答您的问题时很重要 假设它们没有顺序或顺序不重要,可以将每个测试视为向量空间中的一个维度,例如:
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))
太好了,谢谢。实施了你的建议,似乎效果很好。