我在Python中编写一个程序,根据给定的分数数据集(即人1在3,15,6,7,4,3的不同测试中得分,因此是一种类型) C),比较人n的一组新分数并确定该人的类型(AC)。对于分类,我想考虑下机器学习路线,但我也想确定与人n最接近的人ID,哪个是最不相似的(分数不太可能相同) ,我需要找到最近的)。我在考虑使用Levenshtein Python C扩展或SequenceMatcher,有没有人对我如何进行分类和匹配有任何建议或建议? 提前致谢
答案 0 :(得分:0)
根据您的描述,不要认为测试是序列。在回答您的问题时,测试是按特定顺序排列的吗?
假设它们没有被订购或订单不重要,您可以将每个测试视为向量空间中的维度,例如:
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))