我的训练数据包含
之类的文本EMI3776438, U9BA7E, 20FXU84P, 4506067765, N8UZ00351
我正在使用K-Neighbors分类器算法。
现在,我正在使用的方法是将字母转换为数字。
例如,a
/ A
将映射到10
,b
/ B
将映射到11
,{{1} } / c
将映射到C
。转换后,我会将这些数据发送到K-Neighbors分类器。
例如,12
变为ABI37
。
此方法的问题在于1011I37
和AA
都将映射到1010
,并且该算法无法区分它们并正确分类。
是否有一个很好的方法可以将它们转换为仅数字(因为该算法仅适用于数字),以便可以正确完成实际值和分类?
答案 0 :(得分:0)
为此,您首先需要确定一个距离(或“度量”)以进行字符串比较。一旦有了指标,就可以很容易地将k-nn应用于数据,因为k-nn仅需要问“两个数据点之间的距离是多少?”。请参阅this Wikipedia文章以获取想法。
您可以按照您的建议将字符简单地转换为int,但这错过了一个关键点,即它不一定根据k-nn的需要给出有意义的字符串“距离”度量来给出有意义的值。最佳指标的选择取决于特定的问题详细信息,即您的数据实际代表什么!
This issue讨论了类似的问题。