123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package classifier;
- import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Packet;
- import weka.clusterers.SimpleKMeans;
- import weka.core.Instance;
- import weka.core.Instances;
- /**
- * Unsupervised Example: K Means Clustering
- *
- * @author Andreas T. Meyer-Berg
- */
- public class KMeansClustering extends BasicPacketClassifier {
- /**
- * Clusterer
- */
- private SimpleKMeans clusterer;
- /**
- * Number of Clusters
- */
- protected int NUMBER_OF_CLUSTERS = 2;
-
- /**
- * Initializes the k means clusterer
- */
- public KMeansClustering() {
- super();
- clusterer = new SimpleKMeans();
- clusterer.setSeed(42);
- try {
- clusterer.setNumClusters(this.NUMBER_OF_CLUSTERS);
- } catch (Exception e) {
- System.out.println("Error while building cluster");
- e.printStackTrace();
- }
- }
- @Override
- public void trainModel(Instances instances) {
- try {
- clusterer.buildClusterer(instances);
- } catch (Exception e) {
- System.out.println("Failed while training the classifier");
- e.printStackTrace();
- }
- }
- @Override
- public void classifyInstance(Instance instance, Packet origin) {
- try {
- clusterer.clusterInstance(instance);
- } catch (Exception e) {
- System.out.println("KM: Anomaly Detected on Packet: "+origin.getTextualRepresentation());
- }
- }
- @Override
- public long getClassificationStart() {
- return 3600000;
- }
- }
|