1
데이터 마이닝 기술 (kmeans 클러스터링)을 사용하여 맬웨어 탐지를위한 Java 코드를 작성합니다. 패킷을 스니핑 (sniffing)하기 위해 jnetpcap 라이브러리를 사용하여 분석 한 다음, nextpacket
메소드에서 첫 번째 패킷에 대해 kmeans 클러스터링 알고리즘을 작성합니다.weka java 코드 kmeans 클러스터
알고리즘은 Instances
클래스의 객체를 생성 할 때 잘 작동하지만 다음 패킷에서는 예외를 throw 할 때이 코드를 다시 실행할 수 없습니다.
내가 사용하는 코드는 이것이다 :
for(int dim = 0; dim < numDimensions; dim++)
{
Attribute current = new Attribute("Attribute" + dim , dim);
if(dim == 0)
{
for(int obj = 0; obj < numInstances; obj++)
{
// instances.add(new SparseInstance(numDimensions));
instances.add(new DenseInstance(numDimensions));
}
}
for(int obj = 0; obj < numInstances; obj++)
{
instances.get(obj).setValue(current, (Double)data[dim+1][obj]);
}
atts.add(current);
}
Instances newDataset = new Instances("Dataset" , atts, instances.size()); //this is the line that throws the exception
for(Instance inst : instances)
newDataset.add(inst);
SimpleKMeans kMeans = new SimpleKMeans();
kMeans.setNumClusters(2);
// kMeans.setMaxIterations(4);
kMeans.buildClusterer(newDataset);
// int clusterNumbers;
// clusterNumbers=kMeans.numberOfClusters();
for (int j=0;j<numInstances;j++)
{
int classif=kMeans.clusterInstance(newDataset.get(j));
// double []distr=kMeans.distributionForInstance(newDataset.firstInstance());
System.out.println(classif);
// System.out.println(distr[0]);
// System.out.println(distr[1]);
ArrayList<Double> temp5=flowFeatures.get((JFlowKey)data[0][j]);
if (classif==0)
{
// instances0.add(newDataset.get(j));
instance0FlowFeatures.put((JFlowKey)data[0][j], temp5);
}
else if(classif==1)
{
//instances1.add(newDataset.get(j));
instance1FlowFeatures.put((JFlowKey)data[0][j], temp5);
}
}
그리고 제가 보는 예외가 있습니다 :
java.lang.IllegalArgumentException: Attribute names are not unique! Causes: 'Attribute0' 'Attribute1' 'Attribute2' 'Attribute3' 'Attribute4' 'Attribute5' 'Attribute6' 'Attribute7' 'Attribute0' 'Attribute1' 'Attribute2' 'Attribute3' 'Attribute4' 'Attribute5' 'Attribute6' 'Attribute7'
는 사람이 제발 도와 주 시겠어요?
'atts'는 어디에 선언 되었습니까? 매번 새로운 인스턴스를 생성 하시겠습니까? 그렇지 않으면 첫 번째 for-loop를 수행 할 때마다'atts'에 중복 속성이 추가됩니다. –
어떻게 atts를 지울 수 있습니까? –