HierarchicalClustering.java 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package classifier;
  2. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Packet;
  3. import weka.clusterers.HierarchicalClusterer;
  4. import weka.core.EuclideanDistance;
  5. import weka.core.Instance;
  6. import weka.core.Instances;
  7. /**
  8. * Hierarchical Clustering Approach
  9. * @author Andreas T. Meyer-Berg
  10. */
  11. public class HierarchicalClustering extends BasicPacketClassifier {
  12. /**
  13. * Hierarchical cluster which is used
  14. */
  15. private HierarchicalClusterer clusterer;
  16. /**
  17. * Initialize the clusterer
  18. */
  19. public HierarchicalClustering() {
  20. clusterer = new HierarchicalClusterer();
  21. clusterer.setDistanceFunction(new EuclideanDistance());
  22. }
  23. @Override
  24. public void trainModel(Instances instances) {
  25. try {
  26. clusterer.buildClusterer(instances);
  27. } catch (Exception e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. }
  31. }
  32. @Override
  33. public void classifyInstance(Instance instance, Packet origin) {
  34. try {
  35. clusterer.clusterInstance(instance);
  36. } catch (Exception e) {
  37. System.out.println("Anomaly Detected on Packet: "+origin.getTextualRepresentation());
  38. }
  39. }
  40. @Override
  41. public long getClassificationStart() {
  42. return 10000;
  43. }
  44. }