Vor kurzem lese ich "Collective Intelligent Programing" . Im Vergleich zu anderen Büchern für maschinelles Lernen enthält dieses Buch viele Fälle, die näher an der Realität liegen und auch für uns sehr geeignet sind, Anfänger, die bereit sind, Maschinellen zu lernen.
. Das Folgende ist der erste Artikel, der die Korrelationskoeffizienten von Pearson erklärt und die Java -Sprache verwendet, mit der ich eher vertraut bin.
Pearsons mathematische Formel lautet wie folgt aus Wikipedia.
Wo E mathematische Erwartung ist, repräsentiert CoV Kovarianz, und /sigma_x und /sigma_y sind Standardabweichungen.
Nach der Vereinfachung erhalten Sie:
Der Algorithmus für die Ähnlichkeitsberechnung von Pearson ist immer noch sehr einfach und nicht schwer zu implementieren. Nur die Summe der Variablen x, y, Produkt XY, das Quadrat von x und das Quadrat von Y sind erforderlich. Der von meinem Code verwendete Datentestsatz stammt aus der Programmierung von Book Collective Intelligence . Der Code ist wie folgt:
Paket PearlsonCorrelationsCore; Import Java.util.ArrayList; Import Java.util.hashMap; Import Java.util.List; import Java.util.map; Import Java.util.Map; dataset in the book "Collective Intelligent Programming"*/public class PearsonCorrelationScore {private Map<String, Map<String, double>> dataset = null;public PearsonCorrelationScore() {initDataSet();}/*** Initialize the dataset*/private void initDataSet() {dataset = new HashMap<String, Map<String, Double >> (); // Initialisieren Sie die Lisa Rose -Datensatzkarte <String, double> (); Rosemap.put ("Dame im Wasser", 2.5); 2.5); Rückkehr ", 5.0); Jackmap.put (" du, ich und dupree ", 3.5); Jackmap.put (" The Night Listener ", 3.0); Datensatz.put (" Jack Matthews ", Jackmap); // Initialisieren von Jack Matthews Dataset Map <String, Double> Genemap = New Hashmap <String, Double> (); 3.0); Genemap.put ("Schlangen in einer Ebene", 3.5); Genemap.put ("Just My Luck", 1.5); Genemap.put ("Superman Returns", 5,0); Genemap.put ("Sie, me und dupree", 3.5); Genemap.put ("The Night Hörer", 3.0); Karte <String, Double >> getDataset () {return Dataset;}/*** @param Person1* Name* @param Person2* Name* @return Pearson Correlation Value*/public double sim_pearson (String person1, String person2) {// Finden Sie die Filme, die beide Parteien geäußert haben, (Pearson's. (Entry<String, double> p1 : dataset.get(person1).entrySet()) {if (dataset.get(person2).containsKey(p1.getKey())) {list.add(p1.getKey());}}double sumX = 0.0;double sumY = 0.0;double sumX_Sq = 0.0;double sumY_Sq = 0.0;double sumXY = 0.0;int N = list.size (); für (String -Name: list) {map <string, double> p1map = dataset.get (Person1); Karte <String, double> p2map = dataset.get (person2); sumx += p1map.get (name); += Math.pow (p2map.get (name), 2); 0if (nenner == 0) {return 0;} return numerator / nenner;} public static void main (String [] args) {PearsonCorrelationsCore PearlsonCorrelationsCore = new PearsonCorrelationscore (); Matthews "));}}Reflektieren Sie die Daten von jedem Test, der in eine zweidimensionale Koordinatenebene eingestellt ist, wie folgt:
Der vom obige Programm erhaltene Wert ist tatsächlich die Steigung der Linie. Das Intervall seiner Steigung liegt zwischen [-1,1], und die Größe seines absoluten Werts spiegelt die Ähnlichkeit zwischen beiden wider. Je größer die Steigung ist, desto größer die Ähnlichkeit. Wenn die Ähnlichkeit 1 ist, ist die gerade Linie eine Diagonale.
Zusammenfassen
Das obige ist die detaillierte Erklärung der Ähnlichkeit von Java auf der Grundlage des Pearson -Korrelationskoeffizienten in diesem Artikel. Ich hoffe, es wird für alle hilfreich sein. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!