dataanalysis.classifiers
Class KNNClassifier

java.lang.Object
  |
  +--dataanalysis.databases.DatabaseElement
        |
        +--dataanalysis.classifiers.Classifier
              |
              +--dataanalysis.classifiers.KNNClassifier

public class KNNClassifier
extends Classifier

k-Nearest-Neighbor-Verfahren
Bei dem k-Nearest-Neighbor-Verfahren (k-NN) handelt es sich um einen Klassifikationsalgorithmus, der in der Statistik entwickelt wurde. Im Unterschied zu dem naiven Bayes'schen Klassifikator werden keine Verteilungsannahmen gemacht. Vorwissen kann allerdings an anderer Stelle, n?mlich bei der Definition des sogenannten Abstandsmasses eingebracht werden. Dieses Abstandsma? wird dazu benutzt, ?hnliche Situationen aus der Vergangenheit zu finden. Es sollte so beschaffen sein, da? Dokumente, die anhand dieses Masses aehnlich sind, moeglichst zur selben Klasse gehoeren. Die Grundidee des k-Nearest-Neighbbor-Verfahrens ist es, ein neues Beispiel so zu klassifizieren wie die aehnlichsten, fuer die man die Klassifikation kennt. (Quelle: Diplomarbeit "Einsatz eines intelligenten, lernenden Agenten fuer das World Wide Web" von Thorsten Joachims)

Version:
1.7 (28.10.1999)
Author:
Andre Masloch
See Also:
Classifier, Serialized Form

Field Summary
protected  Documentvector DocFrequencies
          beinhalted die Haeufigkeit jedes Wortes in der gesamten, zum Training benutzten Dokumentensammlung.
Wird seit Version 1.4 nicht mehr benutzt, da nur noch die TF-Gewichtung benutzt wird, und deshalb keine Konvertierung notwendig ist.

protected  java.util.TreeMap DocumentSet
          beinhalted alle Dokumente dieses Klassifizierers in einer aufbereiteten Form.
protected  int k
          gibt die Anzahl der naechsten Nachbarn vor, die gefunden werden sollen.
protected  double[] nearestDocuments
          enthaelt die Bewertungen der Dokumente mit den k besten Winkeln zu dem zu klassifizierenden Dokument.
 
Fields inherited from class dataanalysis.classifiers.Classifier
documents, moreDictionaries, moreDictionariesNames, myDatabase, theVectorizer, theVectorizerName, THRESHOLD, untrainedExamples, wordDictionary, wordDictionaryName
 
Fields inherited from class dataanalysis.databases.DatabaseElement
elementname
 
Constructor Summary
KNNClassifier()
           
KNNClassifier(ClassifierDatabase theDB)
           
 
Method Summary
 NetEntity classify(NetEntity document)
          Das uebergebene Dokument wird unter zu Hilfenahme des Vektorisieres, des Lexikons und der Trainingsmenge klassifiziert und eingestuft.
protected  Documentvector convert(Documentvector v)
          Ueberfuehrt den uebergebenen Documentvector aus einer TF-Form in eine TF-IDF-Form.
Wird seit 1.4 nicht mehr benutzt, da keine Document-Frequencies mehr vorhanden sind!

 int getK()
          liefert den Wert der Variable k.
 void setK(int i)
          setzt den Wert der Variable k.
 int train()
          startet das Training des Klassifikators auf den vorhandenen Daten und den neu durch "addExample" hinzugef?gten Beispielen.
protected  int updateDF()
          bringt die DF-Werte (DocFrequencies) auf den neuesten Stand.
 
Methods inherited from class dataanalysis.classifiers.Classifier
addExample, addExample, checkVariables, getThreshold, setDatabase, setThreshold, toString
 
Methods inherited from class dataanalysis.databases.DatabaseElement
getElementname, logMessage, setElementname
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

DocumentSet

protected transient java.util.TreeMap DocumentSet
beinhalted alle Dokumente dieses Klassifizierers in einer aufbereiteten Form. Die Werte der einzelnen Vektoren werden gemaess der TF-IDF-Gewichtung abgespeichert.
Wird seit Version 1.4 nicht mehr benutzt, da nur noch die TF-Gewichtung benutzt wird, und deshalb keine Konvertierung notwendig ist.

DocFrequencies

protected transient Documentvector DocFrequencies
beinhalted die Haeufigkeit jedes Wortes in der gesamten, zum Training benutzten Dokumentensammlung.
Wird seit Version 1.4 nicht mehr benutzt, da nur noch die TF-Gewichtung benutzt wird, und deshalb keine Konvertierung notwendig ist.

k

protected int k
gibt die Anzahl der naechsten Nachbarn vor, die gefunden werden sollen. Standardwert ist 5.
Since:
1.1 (21.9.1999)

nearestDocuments

protected transient double[] nearestDocuments
enthaelt die Bewertungen der Dokumente mit den k besten Winkeln zu dem zu klassifizierenden Dokument. An Position x steht der Winkel (0 <= x="x" <="<" k="k" ).=")." An="An" Position="Position" (k="(k" +1="+1" )=")" +x="+x" steht="steht" die="die" Bewertung="Bewertung" zum="zum" Abstand="Abstand" von="von" (0="(0" />L>
Constructor Detail

KNNClassifier

public KNNClassifier()

KNNClassifier

public KNNClassifier(ClassifierDatabase theDB)
Method Detail

getK

public int getK()
liefert den Wert der Variable k.
Returns:
den Wert der Variable k.
Since:
1.1

setK

public void setK(int i)
setzt den Wert der Variable k.
Parameters:
i - neuer Wert fuer die Variable k, sofern i>0
Since:
1.1

train

public int train()
startet das Training des Klassifikators auf den vorhandenen Daten und den neu durch "addExample" hinzugef?gten Beispielen.
Returns:
die Anzahl der Dokumente, mit denen der Klassifizierer trainiert wurde. -1, wenn die Datenbanken nicht richtig initialisiert wurden.
Overrides:
train in class Classifier

classify

public NetEntity classify(NetEntity document)
Das uebergebene Dokument wird unter zu Hilfenahme des Vektorisieres, des Lexikons und der Trainingsmenge klassifiziert und eingestuft.
Parameters:
document - steht fuer den Text, den der Klassifizierer klassifizieren soll.
Returns:
Ausgabe des klassifizierten Dokuments. Naeheres ist in Classifier.classify(dataprovider.net.NetEntity) nachzulesen.
Overrides:
classify in class Classifier
See Also:
Vectorizer, Dictionary

convert

protected Documentvector convert(Documentvector v)
Ueberfuehrt den uebergebenen Documentvector aus einer TF-Form in eine TF-IDF-Form.
Wird seit 1.4 nicht mehr benutzt, da keine Document-Frequencies mehr vorhanden sind!
Parameters:
v - der mit TF-Werten besetzte Documentvector.
Returns:
eine neue Documentvector-Instanz mit TF-IDF-Werten.
Overrides:
convert in class Classifier
Since:
1.1


updateDF

protected int updateDF()
bringt die DF-Werte (DocFrequencies) auf den neuesten Stand.