【问题标题】:How to find closest answer for given input using machine learning algorithms如何使用机器学习算法找到给定输入的最接近答案
【发布时间】:2017-08-28 17:21:09
【问题描述】:

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

所以,这是我的问题:

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

假设特定测试的正确答案是:A B B D C

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

我想要实现的是根据正确答案找到最接近的答案。在这种特定情况下,它是A C B D C,因为它只有一个错误答案。

所以,我需要从最正确到最不正确的顺序筛选答案。

任何帮助将不胜感激。

【问题讨论】:

  • 我没听懂。你只需要计算正确答案的数量。如果两个输入的这个数字相等,则这些输入同样好。

标签: algorithm machine-learning statistics


【解决方案1】:

也许你可以尝试基于字符串的“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]

但是是的:您也可以遍历答案并检查并计算有多少错误......

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 2015-09-30
    • 2021-06-09
    • 2018-08-29
    • 2020-04-04
    • 2011-08-01
    • 2019-05-25
    • 2020-01-25
    相关资源
    最近更新 更多