Python-Implementierung von Gegenseitigen Informationen
Ich bin mit einigen Fragen der Umsetzung der Gegenseitigen Information Funktion das Python-machine learning Bibliotheken bieten, insbesondere :
sklearn.Metriken.mutual_info_score(labels_true, labels_pred, Kontingenz=None)
(http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mutual_info_score.html)
Ich versuche zu implementieren, das Beispiel finde ich in der Stanford-NLP-tutorial Website:
Die Website ist hier zu finden : http://nlp.stanford.edu/IR-book/html/htmledition/mutual-information-1.html#mifeatsel2
Das problem ist, dass ich immer unterschiedliche Ergebnisse, ohne herauszufinden, den Grund noch.
Bekomme ich das Konzept der Gegenseitigen Information und feature-Auswahl, aber ich weiß einfach nicht verstehen, wie es ist in Python implementiert. Was ich mache ist, dass ich die mutual_info_score Methode mit zwei arrays auf der Basis der NLP Website Beispiel, aber es gibt verschiedene Ergebnisse. Die andere interessante Tatsache ist, dass jedenfalls Sie spielen, um und ändern Sie die zahlen auf diese arrays sind Sie wahrscheinlich das gleiche Ergebnis zu erhalten. Soll ich die verwenden eine andere Datenstruktur, die bestimmte, Python oder was ist die Frage hinter dieser? Hat jemand verwendet diese Funktion erfolgreich in der Vergangenheit, es wäre mir eine sehr große Hilfe, ich danke Ihnen für Ihre Zeit.
- Sie sollten uns arbeiten Beispiel, was genau ist "falsch".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem heute. Nach ein paar versuchen fand ich den wahren Grund: Sie nehmen log2 wenn Sie strikt befolgt NLP Lehrgang, aber sklearn.Metriken.mutual_info_score verwendet den natürlichen Logarithmus(Basis e, die Eulersche Zahl). Ich habe nicht, dass dieses detail in sklearn Dokumentation...
Ich habe überprüft dies durch:
Wenn Sie dies ändern
np.log2
zunp.log
ich denke, es würde Ihnen die gleiche Antwort wie sklearn. Der einzige Unterschied ist, dass, wenn diese Methode gibt 0 zurück, sklearn gibt eine Zahl sehr nahe an 0. ( Und natürlich, verwenden Sie sklearn wenn Sie kümmern sich nicht um die log-Bezugsgröße, mein Stück code ist nur für die demo, es gibt schlechte Leistung...)FYI, 1)
sklearn.metrics.mutual_info_score
nimmt Listen sowie np.array; 2) diesklearn.metrics.cluster.entropy
nutzt auch die log, nicht log2Edit: wie für das "gleiche Ergebnis", bin ich nicht sicher, was Sie wirklich bedeuten. Im Allgemeinen werden die Werte in den Vektoren nicht wirklich wichtig, es ist die "Verteilung" der Werte, was zählt. Sie kümmern sich um P(X=X) P(Y=y) und P(X=x,Y=y), nicht den x-Wert,y.
Den code unten sollte sofern eine Ergebnis:
0.00011053558610110256