In diesem Artikel verwendet der Autor, der Graphviz noch nie verwendet hat, ** Graphviz ** in ** jupyter-notebook **. Übrigens gibt es verschiedene Informationen zur Verwendung von Graphviz im Internet. Zum Beispiel
Oder so. Sie können es verwenden, indem Sie es in einem der beiden oben genannten Artikel einstellen. Wenn Sie sich die Website ansehen und das Gefühl haben, dass dies in Ordnung ist, ist alles in Ordnung. Dieses Mal werde ich die beiden Artikel ein wenig mischen, um eine Umgebung zu schaffen.
Lassen Sie uns zunächst einen kurzen Blick auf Graphviz werfen. Ich denke, es ist eine Zusammenfassung der folgenden Websites.
Graphviz ist eine Abkürzung für Graph Visualization Software, ein Tool zum Erstellen von Grafiken. Eine Textdatei, die mit einer Datenbeschreibungssprache namens Punktsprache geschrieben wurde, kann konvertiert und als Bilddatei ausgegeben werden. Es wird auch beim Zeichnen eines Entscheidungsbaums für maschinelles Lernen verwendet. Verschiedene Plattformen (Windows, Mac, Linux) stehen zur Verfügung. Übrigens scheint dot ein Programm zu sein, das gerichtete Graphen zeichnet.
Quelle: Statistische Textanalyse (6) - Wortnetzwerkanalyse -
Die obige Abbildung zeigt den Unterschied zwischen einem gerichteten und einem ungerichteten Diagramm. Gibt es eine bestimmte Richtung von einem Scheitelpunkt zum anderen? Gibt es in der obigen Abbildung einen Pfeil? Mit anderen Worten, die Beziehung zwischen jedem Scheitelpunkt ist fest oder nicht. Beispielsweise ist der gerichtete Graph ein Hyperlink und der ungerichtete Graph eine Zugroutenkarte. Ich kann nicht zur Originalseite zurückkehren, wenn ich auf den Hyperlink klicke (denken Sie nicht an den Zurück-Button lol) </ font>, und der Zug fährt frei zwischen den benachbarten Stationen hin und her. tun können.
Es gibt zwei Installationsmethoden, die ich dieses Mal ausprobiert habe. Übrigens, als ich auf die Download-Seite der offiziellen Website ging, war sie anders als die auf der obigen Website eingeführte.
Diese beiden Methoden.
Klicken Sie zunächst auf den Link auf der offiziellen Website von hier. Klicken Sie dann auf Download Klicken Sie unter Windows auf Graphviz Windows-Pakete Sie werden zur Github-Seite weitergeleitet. Wählen Sie also die Datei "2.38 yaml" aus. Wenn Sie den auf URL veröffentlichten Link durchsuchen, wird er ohne Erlaubnis heruntergeladen Starten Sie danach das Installationsprogramm und starten Sie die Installation. Sie können auf die Website hier verweisen. Bitte beurteilen Sie anhand der Anzahl der Konten auf Ihrem Computer, ob "alle" überprüft werden sollen.
Sie können die Zip-Datei von der Website hier löschen. Nach dem Löschen müssen Sie die Datei nur noch entpacken.
Dieses Mal werden wir die Grafik des Entscheidungsbaums anhand des überlebenden Datensatzes der Titanic visualisieren. Dieser Code lautet [hier](https://qiita.com/5sigma_AAA/items/0c23907da9330681147b#%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81% AE% E5% AE% 9F% E8% A3% 85) bezieht sich auf den Code. Ich werde es separat in einem Jupiter-Stil schreiben.
Laden Sie zunächst die erforderlichen Bibliotheken. (Der Benutzerteil ist Ihr Kontoname)
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, auc, accuracy_score
import pandas as pd
from sklearn.tree import export_graphviz
import pydotplus
from io import StringIO
from IPython.display import Image
#Daten lesen
train = pd.read_csv("/Users/user/jupyter/train.csv")
Grundsätzlich scheinen allgemeine Datensätze fehlende Werte zu haben. Überprüfen Sie dies
train.isnull().sum()
PassengerId 0 Survived 0 Pclass 0 Name 0 Sex 0 Age 177 SibSp 0 Parch 0 Ticket 0 Fare 0 Cabin 687 Embarked 2
In Age, Cabin und Embarked scheinen Werte zu fehlen. Ich werde Cabin ignorieren, weil ich es diesmal nicht benutzen werde. Der fehlende Wert von Alter ergänzt den Durchschnitt des gesamten Alters, und Eingeschifft ergänzt den häufigsten Wert "S".
train["Age"] = train["Age"].fillna(train["Age"].median())
train["Embarked"] = train["Embarked"].fillna("S")
Wenn wir lernen, müssen wir es zu einem int-Typ machen, damit wir die Zeichenfolgen 'Sex' und 'Embarked' in Zahlen konvertieren. Dieses Mal werden die Nummern manuell zugewiesen, sie können jedoch auch mithilfe von Dummy-Variablen konvertiert werden.
#Konvertierung kategorialer Variablen
train['Sex'] = train['Sex'].apply(lambda x: 1 if x == 'male' else 0)
train['Embarked'] = train['Embarked'].map( {'S': 0 , 'C':1 , 'Q':2}).astype(int)
Löschen Sie nicht verwendete Klassen.
train = train.drop(['Cabin','Name','PassengerId','Ticket'],axis =1)
Überprüfen Sie nach Abschluss der Datenvorverarbeitung einmal auf fehlende Werte.
train.isnull().sum()
Survived 0 Pclass 0 Sex 0 Age 0 SibSp 0 Parch 0 Fare 0 Embarked 0
Ich konnte fehlende Werte beseitigen. Als nächstes werden wir den Datensatz für den Zug und den Datensatz für den Test trennen. Die Verteilung der Testbilder betrug 30% der Gesamtmenge.
#Unterteilt in Trainingsdaten und Testdaten
train_X = train.drop('Survived',axis = 1)
train_y = train.Survived
(train_X , test_X , train_y , test_y) = train_test_split(train_X, train_y , test_size = 0.3 , random_state = 0)
Baue ein Modell und trainiere. Die Tiefe beträgt 3 Schichten.
#train
model = DecisionTreeClassifier(max_depth=3,random_state = 0)
model.fit(train_X , train_y)
#accuracy
pred = model.predict(test_X)
fpr, tpr, thresholds = roc_curve(test_y , pred,pos_label = 1)
auc(fpr,tpr)
print("accuracy=",accuracy_score(pred,test_y)
accuracy=0.8208955223880597
Von hier aus werde ich mit Graphviz zeichnen.
#Prozess zum Behandeln der Zeichenfolge wie ein Dateiobjekt
dot_data = StringIO()
export_graphviz(
model, out_file=dot_data,
feature_names=train_X.columns,
class_names=["Death", "Survival"]
)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
#Geben Sie den absoluten Pfad des Verzeichnisses an, in das Sie graphviz heruntergeladen haben
graph.progs = {'dot': u"C:\\Users\\user\\anaconda3\\bin\\release\\bin\\dot.exe"}
#Im Notizbuch visualisieren
Image(graph.create_png())
Ich konnte einen Entscheidungsbaum zeichnen.
Diesmal habe ich jupyter verwendet, aber natürlich ist es mit anderen IDEs möglich. Am schwierigsten war es übrigens, die Installationsdatei von der offiziellen Website zu finden.
Recommended Posts