열이 "lat, lon, item1"인 여러 열이있는 CSV 파일이 있습니다. 나는 다음과 같은 코드를 사용하여 데이터를로드 할 수 있었다 :ELKI DBSCAN 열 무시
ListParameterization params = new ListParameterization();
List<ObjectFilter> filterlist = new ArrayList<>();
filterlist.add(new FixedDBIDsFilter(1));
NumberVectorLabelParser<DoubleVector> parser = new NumberVectorLabelParser<>(DoubleVector.FACTORY);
FileBasedDatabaseConnection dbc = new FileBasedDatabaseConnection(filterlist, parser, is);
params.addParameter(AbstractDatabase.Parameterizer.DATABASE_CONNECTION_ID, dbc);
Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, params);
db.initialize();
나는 또한 DBSCAN를 실행하고 클러스터의 수를 검색하고 내가 클러스터에서 데이터를 뽑을 수있다.
ListParameterization params1 = new ListParameterization();
params1.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0.05);
params1.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 2);
DBSCAN<DoubleVector> dbscan = ClassGenericsUtil.parameterizeOrAbort(DBSCAN.class, params1);
Clustering<Model> result = dbscan.run(db);
나는 단지 위도 두 개의 열을 사용하는 경우 때문에 DBSCAN 스캔에 대한 모든 세 개의 열을 사용하고 있음을 알 수있다, 경도, 내가 클러스터의 다른 번호를 얻을.
나중에 액세스 할 수 있도록 모든 열을 데이터베이스에두고 싶지만 위도/경도 열만 클러스터링하십시오. 다른 열을 표시해야 사용할 수 있도록 올바른 열을 찾을 수 없기 때문에 뭔가 다른 열을 표시해야한다고 생각합니다. 다음과 같이 작동 할 것이라고 생각했지만 그렇지 않았습니다.
params.addParameter(NumberVectorLabelParser.Parameterizer.LABEL_INDICES_ID, 2);
누군가 나를 도와 줄 수 있습니까? (당신이 new long[]{4L}
을 할 수 있도록,이 현재 하지 정수 배열하지만, 비트 마스크입니다)
도움 주셔서 감사합니다. 비트 마스크가 작동하는 방식을 파악하는 데는 약간의 시간이 걸렸지 만 lat 및 lon 열만 사용했습니다. 거리 함수와 Euclidean 및 DimensionSelectingLatLngDistanceFunction에 대한 결과도 매우 다르지만 클러스터 크기를 적절하게 조정하기 위해 엡실론을 조정할 것입니다. – SpiltMilk