如何使用机器学习算法找到给定输入的最接近答案

时间:2017-04-03 18:07:21

标签: algorithm machine-learning statistics

我有一个问题,我将在下面解释,但我还没有决定哪个流行的机器算法(kmeans,KNN等)更适合这个问题。

所以,这是我的问题:

将每个输入视为答案。每个问题有5个选项(A,B,C,D,E),其中一个是正确的。

让我们假设特定测试的正确答案是:.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=D1=""'Working'"""

给定的2个不同输入是:A B B D CA C B D C。第一个只有一个不正确的答案,这是第二个问题。第二个是2个不正确的答案。

我试图找到的是基于正确答案找到最接近的答案。在这种特定情况下,它是B C B D C,因为它只有一个不正确的答案。

所以,我需要过滤从最正确到最不正确的答案。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许你可以根据字符串尝试“Levenshtein distance(fast-levenshtein)”。 它的作用是,它是一个用于测量两个序列之间编辑距离的字符串度量。或者换句话说,它会告诉你要改变多少个字符以获得另一个字。

'''
example:
"hello" - "hallo" : 1
"hello" - "helpp" : 2
"hello" - "welp"  : 3 (change 2 letters and remove 1 letter)
"hello" - "yellow": 2 (change 1 letter and add 1 letter)
 etc...
'''

import editdistance

def minimum_edit_distance(answer, answers):

    answ = []

    for a in answers:
        answ.append(editdistance.eval(answer.lower(), a.lower()))

    return answ

minimum_edit_distance("hello", ["hallo", "helpp", "welp", "yellow", "hello"])


# Result : [1, 2, 3, 2, 0]

# OR

minimum_edit_distance("ABBDC", ["ACBDC", "BCBDC", "ABBCD", "AABDC", "CCCCC"])
# Result : [1, 2, 2, 1, 4]

但是是的:你也可以循环回答并检查并计算出错了多少......