matlab - 带有分类数据的KNN分类

我正忙于一个涉及k近邻回归的项目我混合了数字和分类字段分类值是序数(例如银行名称、帐户类型)数字类型包括,例如工资和年龄也有一些二进制类型(如男性、女性)。
如何将分类值纳入KNN分析?
据我所知,不能简单地将每个分类字段映射到数字键(例如,bank 1=1;bank 2=2等),所以我需要使用分类字段的更好方法我听说可以用二进制数,这是可行的方法吗?
如能提供建议,将不胜感激。

最佳答案

你需要找到一个适合你的数据的距离函数使用二进制指示符变量隐式地解决了这个问题这样做的好处是,您可以继续使用这种类型的数据执行可能基于矩阵的实现,但一种更简单的方法(而且适用于大多数基于距离的方法)是只使用修改后的距离函数。
这样的组合有无穷多个你需要试验哪个对你最有效实际上,您可能希望对数值使用一些经典度量(通常应用规范化;但也可以将此规范化移到距离函数中),再加上其他属性上的距离,并适当缩放。
在大多数基于距离的算法的实际应用领域中,这是最困难的部分,优化特定于域的距离函数您可以将其视为预处理的一部分:定义相似性。
不仅仅是欧几里德距离有各种集合论方法,可能更适合你的情况例如,Tanimoto系数、Jaccard相似性、Dice系数等余弦也可能是一个选择。
有很多会议专门讨论相似性搜索的主题-除了欧几里德向量空间(实际上,甚至没有)之外,没有人声称这是微不足道的:http://www.sisap.org/2012

本文翻译自 https://stackoverflow.com/questions/13625849/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 matlab octave classification knn ordinal


相关文章:

matlab - 图像处理中的平均蒙版和拉普拉斯蒙版

c++ - MATLAB等效于C ++

matlab - 如何获取Matlab或Octave中所有已定义变量的列表?

algorithm - 使用Octave / Matlab将多个斑点紧密结合成一个斑点

matlab - 从特征向量分类

matlab - 在MATLAB中围绕数据点组绘制多边形

c++ - 从C ++启动matlab脚本并等待结果

matlab - 如何获取当前正在执行的函数的标准名称?

python - 如何使用shuffle_batch()函数避免超出范围的错误?

python - 连续3维变量的离散化