我正在用Python编写一个程序,根据给定的评分数据集(例如,第一人的不同测试得分为3,15,6,7,4,3,因此属于C类),比较第n个人的一组新得分,并确定此人的类型(A-C)。对于分类,我考虑使用机器学习方法,但我也想找出与第n个人最接近和最不相似的个人ID(得分不太可能相同,我需要找到最接近的)。我考虑使用Levenshtein Python C扩展或SequenceMatcher,有没有人能提供一些关于如何进行分类和匹配的建议或建议?提前感谢
回答:
根据你的描述,我认为这些测试不是序列。测试是否有特定的顺序,并且顺序在回答你的问题时是否重要?
假设它们没有顺序或顺序不重要,你可以将每个测试视为向量空间中的一个维度,例如:
test1 test2 test3 classperson1 3 0 1 Aperson2 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))