从 Weka 的 Java API 获取欧几里得距离
我正在使用 Weka 机器学习库的 Java API...
我正在尝试使用 EuclidianDistance 类计算两个实例之间的距离:
http://weka.sourceforge.net/doc.dev/weka/core/EuclideanDistance.html
我有以下代码:
EuclideanDistance ed = new EuclideanDistance(finalInst);
double dist;
dist = ed.distance(finalInst.firstInstance(),finalInst.lastInstance());
finalInst
是一个有效的 Instances 对象,其中包含有效的 Instance 对象...
这是使用 System.out.println
时的第一个和最后一个实例:
finalInst.firstInstance():
?,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
finalInst.lastInstance():
?,?,?,?,1,1,?,1,?,1,?,?,1,?,?,?,?,?,1
但是当我运行时代码,它返回空指针异常...
我哪里出错了?
I'm using Weka Machine learning library's Java API...
I'm trying to calculate the distance between two instances using the EuclidianDistance class:
http://weka.sourceforge.net/doc.dev/weka/core/EuclideanDistance.html
I have this code:
EuclideanDistance ed = new EuclideanDistance(finalInst);
double dist;
dist = ed.distance(finalInst.firstInstance(),finalInst.lastInstance());
finalInst
is a valid Instances object that contains valid Instance objects...
Here's what the first and last instance are when you use System.out.println
:
finalInst.firstInstance():
?,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
finalInst.lastInstance():
?,?,?,?,1,1,?,1,?,1,?,?,1,?,?,?,?,?,1
But then when I run the code, it returns a null pointer exception...
Where did I go wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我有两个实用的建议:
1)深入研究 WEKA 的代码。它是开源的,因此您实际上可以将源代码添加到您的 Eclipse 项目中并使用 F3 浏览相关功能(我确实希望您使用 Eclipse 或其他一些合理的 IDE)。
2)实现你自己的欧几里德距离。这真的很简单。在这里,我什至已经为你做到了:
I've got two practical suggestions:
1) Dig in WEKA's code. It's open-source, so you can actually add the source to your Eclipse project and browse the relevant functions with F3 (I do hope you're using Eclipse or some other reasonable IDE).
2) Implement your own Euclidean distance. It's really simple. Here, I've even done it for you:
旧线程,但是:
您必须将 Instances(通常来自 ARFF 文件)对象传递给 EuclideanDistance 构造函数。
重新实现轮子通常会导致将来出现问题。
例如,属性可以是名义的。
Old thread, but:
You have to pass an Instances (that usually comes from an ARFF file) object to the EuclideanDistance constructor.
Re-implementing the wheel usually leads to problems in the future.
For example, attributes can be nominal.