2017-02-13 55 views
1

我需要预处理的数据转换为数字,以便能够在数据集中应用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 

从本质上讲,该字符串转换成一个独特的实数,其中,这个数字将是非常接近其他号码,如果他们的弦几乎相同,该上来的第一句话给予更大的权重首先在String上。

我的问题,是有一个已经存在的算法来解决这个问题?

+0

你问嵌入在1个维空间高维空间。除了大约这通常是不可能的。有关指针的信息,请参阅https://en.wikipedia.org/wiki/Nonlinear_dimensionality_reduction,但您还需要确定您的距离度量标准。 –

回答

0

首先,我不知道任何算法来解决这个问题。但我有一个想法(我知道这不是“答案”,但我缺乏将此添加为评论的声望)。

通过重复正比于从端它们的位置的每个字符变换每个字符串。例如,“Foo”将变成“FFFooo”和“abcd”“aaaabbbccd”。然后使用edit-distance过每对建立一个距离矩阵,M.

现在是一个优化问题。从随机解开始(对每个单词都是一个随机实数),然后计算解的距离矩阵M',并使M和M'之间的某个度量(平方误差)最小化。

0

在我看来,从你的榜样,你正在努力寻找文本的两笔之间的相似性。余弦相似度是在这种情况下使用最广泛的距离度量。

例如,让我们比较“小男孩吃苹果”和“女孩吃鸭梨”

首先,创建一个频率矩阵,其中进入IJ包含次项j的数目载于文件一世。

   "the" "boy" "girl" "eats" "apple" "pear" 
(sentence 1) 2  1  0  1  1  0 
(sentence 2) 2  0  1  1  0  1 

的余弦相似性可以因此与

enter image description here

来计算从Principles of Data Mining

这是anvgle的两个矢量(等同地,它们的内积之间的余弦在每个标准化为单位长度之后),并且因此反映了它们的术语分量的相对分布的相似性。