我需要将数据预处理为数字,以便能够在数据集中应用 ML 算法,但有一个功能几乎是树结构的字符串,我不知道如何转换。下面是一个例子:
Feature -> Value I would like to transform to (example):
X Y Z foo -> 0.5
X Y Z bar -> 0.501
A B C foo -> 4.1
W B C foo -> 5
本质上,字符串将转换为一个唯一的实数,如果字符串几乎相同,则该数字将非常接近其他数字,从而为字符串中最先出现的第一个单词赋予更大的权重。
我的问题是,是否有现成的算法来解决这个问题?
最佳答案
首先,我不知道有什么算法可以解决这个问题。但我有一个想法(我知道这不是“答案”,但我缺乏将其添加为评论的声誉)。
通过从末尾开始重复与其位置成比例的每个字符来转换每个字符串。例如,“Foo”将变成“FFFooo”和“abcd”“aaaabbbccd”。然后使用 edit-distance在每一对上构建一个距离矩阵 M。
现在是一个优化问题。从随机解(每个词的随机实数)开始,然后计算解的距离矩阵 M' 并最小化 M 和 M' 之间的某些度量(平方误差)。
关于string - 机器学习根据字符串相似度将字符串预处理为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201907/