【发布时间】:2014-06-21 00:01:54
【问题描述】:
С 有人为我的 matlab 程序发光吗?
我有来自两个传感器的数据,我正在为每个传感器分别进行kNN 分类。
在这两种情况下,训练集看起来都是一组总共 42 行的向量,如下所示:
[44 12 53 29 35 30 49;
54 36 58 30 38 24 37;..]
然后我得到一个样本,例如[40 30 50 25 40 25 30] 我想将样本分类到最近的邻居。
作为接近标准,我使用欧几里得度量,sqrt(sum(Y2)),其中Y 是每个元素之间的差异,它给了我一个数组样本与每类训练集之间的距离。
那么,两个问题:
- 是否可以将距离转换为概率分布,例如:1 类:60%、2 类:30%、3 类:5%、5 类:1% 等。
补充说:到目前为止,我正在使用公式:probability = distance/sum of distances,但我无法绘制正确的cdf 或直方图。
这以某种方式给了我一个分布,但我在那里看到了一个问题,因为如果距离很大,例如 700,那么最近的类将获得最大的概率,但这是错误的,因为距离太大而不能与任何类相比。
- 如果我能得到两个概率密度函数,我想我会做它们的乘积。有可能吗?
非常感谢任何帮助或评论。
【问题讨论】:
-
也许你的意思是
probability = distance/sum of distances -
概率加起来应该总是 1 - 所以你应该弄清楚你的标准化是(与一个状态相关的某个数字)/(与所有状态对应的数字的总和)。这在你的情况下意味着什么有点难以判断。
-
感谢你们的 cmets,伙计们,我明白这个问题。必须等于 1 并且
probability = distance/sum of distances满足它。 -
但是想象一下这种情况:最小距离是 50,第二个最小值是 100,第三个最小值是 500,而总和是 30.000,我从这个公式中得到的是:0.16%, 0.3%、1.6%……最远的说33%,这不是概率,更像是错误的百分比,而是如何更简洁?
标签: matlab classification knn euclidean-distance probability-density