私はここでELKIに新しいです。SLINKを自分のデータで実行しようとしています - ELKI
私は特定の距離測定のためのガウアーでSLINKを実行する必要が
{int xpto; String customer; int another, ...}
のような数値とカテゴリ変数を持つインスタンス
MyInstance
のリストを持っている:ここで私が何をしようとしています何を行きますカスタムのこのリスト全体のためのケースは、私は次のようでしたチュートリアルと記事を読んだ後
オブジェクト:
独自のカスタムオブジェクト- 私はインスタンスのそれぞれが1つのオブジェクトのみを持っているのに、私は
FeatureVector
を実装して独自のカスタムデータ型を作成したDB - にデータをロードするためにデータベース接続を作成します
SimpleTypeInformation(MyDataType.class)
私が持っている問題は、私はそれが関係
を得ることに私にnullポインタ例外を与えるアルゴリズムを実行しようとすると、 de.lmu.ifi.dbs.elkiでde.lmu.ifi.dbs.elki.database.AbstractDatabase.getRelation(AbstractDatabase.java:118) におけるスレッド "メイン" のjava.lang.NullPointerExceptionにおける例外。 main.TestingELKI.main(TestingELKI.java:104)でalgorithm.AbstractAlgorithm.run(AbstractAlgorithm.java:81) は
あなたはここで助けてくださいことはできますか?私は本当に今デシベル関係に
public class MyDatabaseConnection implements DatabaseConnection {
private List<MyInstance> m_data;
private int m_size;
public MyDatabaseConnection(ArrayList<MyInstance> data, int size) {
m_data = data;
m_size = size;
}
@Override
public MultipleObjectsBundle loadData() {
MultipleObjectsBundle b = new MultipleObjectsBundle();
int mind = 1;
int maxd = 1;
List<MyDataType> vecs = new ArrayList<>(m_size);
for(int i = 0; i < m_size; i++) {
vecs.add(new MyDataType(m_data.get(i)));
}
SimpleTypeInformation<MyDataType> type = new SimpleTypeInformation(MyDataType.class);
b.appendColumn(type, vecs);
return b;
}
}
public class MyDataType implements FeatureVector {
MyInstance m_instance;
public static final MyDataType.Factory FACTORY = new MyDataType.Factory();
public MyDataType(MyInstance instance) {
m_instance = instance;
}
@Override
public int getDimensionality() {
// TODO Auto-generated method stub
return 1;
}
@Override
public Object getValue(int arg0) {
// TODO Auto-generated method stub
if (arg0 == 1) {
return m_instance;
} else {
System.out.println("OOOOPPPPPPPSSSSS!");
return null;
}
}
public static class Factory implements FeatureVector.Factory {
@Override
public ByteBufferSerializer getDefaultSerializer() {
// TODO Auto-generated method stub
return null;
}
@Override
public Class getRestrictionClass() {
// TODO Auto-generated method stub
return MyDataType.class;
}
@Override
public FeatureVector newFeatureVector(Object arg0, ArrayAdapter arg1) {
// TODO Auto-generated method stub
return new MyDataType(new MyInstance("0","0"));
}
}
}
MAIN
// create my database connection
// load data into database
DatabaseConnection dbc = new MyDatabaseConnection(data, size);
Database db = new StaticArrayDatabase(dbc, null);
db.initialize();
Relation<FeatureVector> labels = db.getRelation(TypeUtil.ANY);
// now set the right distance function
MyDistance dist = new MyDistance();
SLINK algorithm = new SLINK(dist);
Result res = algorithm.run(db);
MyDataType-> MyInstanceはハックのようです。 MyInstanceで直接作業することはできませんか?また、あなたの距離関数はここにはありません - 多分あなたのエラーはそこにありますか? –
あなたの迅速な答えに感謝します。私はちょうどあなたがここで参照したことをしました:a)MyInstanceのみを使用するようにハッキングを変更しましたb)MyInstanceクラスのみを使用するように距離関数を再構築しました...距離関数でgetInputTypeRestrictionが新しいSimpleTypeInformation(MyInstance 。クラス);本当に助けに感謝します。大きな感謝 –