Entscheidungsbaumanalyse und K-Means-Clustering unter Verwendung des Iris-Datensatzes.

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon

Einführung:

Wie wir alle wissen, Künstliche Intelligenz ist in unserer Umgebung weit verbreitet: vom Lesen der Nachrichten auf Ihrem Mobilgerät oder der Analyse komplexer Daten an Ihrem Arbeitsplatz, KI hat die Geschwindigkeit verbessert, Präzision und Effektivität menschlicher Bemühungen. Fortschritte in der KI haben uns geholfen, Dinge zu erreichen, von denen wir vorher dachten, dass sie nicht möglich wären. Sogar eine Pizza aus Ihrem Lieblingsrestaurant zu Hause ist nur einen Klick entfernt, dank AI.

In einer Nussschale, Künstliche Intelligenz bezeichnet einen Computer oder ein Computerprogramm, das die menschliche Intelligenz nachahmt. Es wird erreicht, indem man lernt, wie man denkt, lernen, entscheidet und bearbeitet das menschliche Gehirn, während es ein Problem löst. Die Ergebnisse dieser Studie dienen dann als Grundlage für die Entwicklung intelligenter Systeme und Software..

Es gibt 4 Arten des Lernens:

Überwachtes Lernen.

Unbeaufsichtigtes Lernen.

Teilüberwachtes Lernen.

Verstärktes Lernen.

Beaufsichtigt Unbeaufsichtigt Teilüberwacht Verstärkt
Beim überwachten Lernen wird das Modell mit einem gekennzeichneten Datensatz trainiert. Das Unüberwachtes Lernen ist, wenn das Modell mit einem unbeschrifteten Dataset trainiert wird, Es liegt am Algorithmus, die zugrunde liegenden Muster in den Daten zu finden. Es liegt zwischen überwachtem und unüberwachtem Lernen, in diesem, einige Lerndaten sind beschriftet und andere nicht. Der Algorithmus bewertet seine Leistung anhand von Feedback-Antworten und reagiert entsprechend.

Dieser Blog behandelt überwachtes und unüberwachtes KI-Lernen, Verwenden von Python- und Iris-Datensätzen.

Inhaltsverzeichnis:

  1. Einführung
  2. Iris-Datensatz
  3. Überwachtes Lernen
  4. Entscheidungsbaum
  5. Logistische Regression
  6. Unbeaufsichtigtes Lernen
  7. Gruppierung von K-Strümpfen
  8. Fazit und Referenzen

Iris-Datensatz:

Der Datensatz enthält 3 Klassen mit 50 Instanzen jeweils und 150 Gesamtinstanzen, wobei sich jede Klasse auf eine Art von Irispflanze bezieht.

Klasse: Seidige Iris, Iris Versicolour, Iris Virginica

Das Datenformat: (Kelchblattlänge, Kelchbreite, Blütenblattlänge, Blütenblattbreite)

20733Iris-3539434

Basierend auf diesen werden wir unsere Modelle trainieren Parameter Und wir werden sie verwenden, um die Arten von Blumen vorherzusagen.

Die Daten verstehen:

Laden Sie den Iris-Datensatz herunter von https://www.kaggle.com/uciml/iris

numpy als np importieren
Pandas als pd importieren
import matplotlib.pyplot als plt
iris = pd.read_csv("Iris.csv") #Iris.csv ist jetzt ein Pandas-Datenrahmen
drucken(iris.kopf()) #druckt zuerst 5 Werte
drucken(iris.describe()) #druckt einige grundlegende statistische Details wie Perzentil,bedeuten, std usw. des Datenrahmens
16566Iriskopf_-2786086
iris.kopf ()
42140iris-describe-3459342
iris.describe ()

Visualisierung der Daten mit matplotlib:

iris.plot(Art="streuen", x="KelchlängeCm",   y ="KelchblattBreiteCm")
plt.zeigen()
75894Scatter_plot-6136253
Streudiagramm

Datenvisualisierung mit Andrews Kurven von Pandas:

Andrews-Kurven haben die funktionale Form:

F

x_4 ohne (2T) + x_5 cos (2T) +…

Dabei entsprechen die Koeffizienten x den Werten jedes Abmessungen y t hat einen linearen Abstand zwischen -pi und + Pi. Jede Reihe des Rahmens entspricht einer einzelnen Kurve.

aus pandas.plotting import andrews_curves
andrews_curves(iris.tropfen("Ausweis", Achse=1), "Spezies")
plt.zeigen()
74761andrews20curves-3533825
Andrews-Kurvendiagramm

Datensatzvorverarbeitung:

Verwenden einer integrierten Bibliothek namens ‚train_test_split‘, das teilt unseren Datensatz in einen Anteil von 80:20. Das 80% wird verwendet, um Ausbildung, Bewertung und Auswahl zwischen unseren Modellen und den 20% wird als Validierungsdatensatz aufbewahrt.

aus sklearn.model_selection import train_test_split
x = iris.iloc[:, :-1].Werte #letzte Spalte Werte ausgeschlossen
y = iris.iloc[:,   -1].Werte #letzter Spaltenwert
aus sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,Ja,test_size=0.2,random_state=0)  #Aufteilen des Datensatzes in den Trainingssatz und den Testsatz

Überwachtes Lernen :

Überwachte maschinelle Lernalgorithmen werden trainiert, um Muster anhand eines Datensatzes zu finden. Der Vorgang ist einfach, nimmt das in der Vergangenheit Gelernte und wendet es dann auf neue Daten an. Beim überwachten Lernen werden beschriftete Beispiele verwendet, um zukünftige Muster und Ereignisse vorherzusagen.

Zum Beispiel, wenn wir einem Kind das beibringen 2 + 2 = 4 oder wir weisen auf das Bild eines Tieres hin, damit Sie seinen Namen kennen.

Das betreute Lernen ist wiederum unterteilt in:

Einstufung: Klassifizierung sagt kategoriale Klassenbezeichnungen voraus, die sind diskret und chaotisch. Es ist ein zweistufiger Prozess, bestehend aus einem Lernschritt und einem Klassifikationsschritt. Es gibt verschiedene Klassifizierungsalgorithmen wie: „Entscheidungsbaum-Klassifikator“, „Zufälliger Wald“, „Naive Bayes-Klassifikator“, etc.

Rückschritt: Regression wird im Allgemeinen als die Bestimmung einer Beziehung zwischen zwei oder mehr Variablen beschrieben, wie man die Arbeit einer Person basierend auf Eingabedaten vorhersagt X. Einige der Regressionsalgorithmen sind: „Logistische Regression“, „Schleifenregression“, „Ridge-Regression“, etc. .

21093erfassen-5016285
Beispiel für betreutes Lernen

Entscheidungsbaum-Klassifikator:

Der allgemeine Grund für die Verwendung eines Entscheidungsbaums besteht darin, ein Trainingsmodell zu erstellen, das verwendet werden kann, um die Klasse oder den Wert der Zielvariablen vorherzusagen, indem aus früheren Daten abgeleitete Entscheidungsregeln gelernt werden. (Trainingsdaten).

Versuchen Sie das Problem mithilfe der Baumdarstellung zu lösen. Jeden Knoten Der innere Knoten des Baums entspricht einem Attribut, und jeder Blattknoten entspricht einer Klassenbezeichnung.

Verwenden des Entscheidungsbaums im Iris-Dataset:

aus sklearn.tree import DecisionTreeClassifier
von sklearn.metrics import precision_score
Klassifikator = DecisionTreeClassifier()
Klassifikator.fit(x_train,   y_train) #den Klassifikator trainieren
y_pred = classifier.predict(x_test) #Vorhersagen treffen
drucken(Klassifizierungsbericht(y_test,   y_pred)) #Zusammenfassung der Vorhersagen des Klassifikators
drucken(Verwirrung Matrix(y_test, y_pred)) #um die Qualität der Ausgabe zu bewerten
drucken(Genauigkeit ist,Genauigkeit_Score(y_pred,y_test)) #Genauigkeitsbewertung

Präzision: Genauigkeit positiver Vorhersagen.

Erholung: Anteil der Positiven, die richtig identifiziert wurden.

F1-Ergebnis: Wie viel Prozent der positiven Vorhersagen waren richtig??

Makrodurchschnitt – Durchschnittlicher ungewichteter Mittelwert pro Etikett

gewichteter Durchschnitt: Durchschnitt des gewichteten Durchschnitts der Unterstützung pro Etikett

Heatmap für die Verwirrungsmatrix:

Seegeboren als sns importieren
cm = Verwirrung_matrix(y_test, y_pred) #In df umwandeln
cm_df = pd.DataFrame(cm,Index = [Setosa,Versicolor,Virginica], Spalten = [Setosa,Versicolor,Virginica])
plt.figur(Feigengröße=(5.5,4))
sns.heatmap(cm_df,   annot=Wahr)
plt.ylabel(Wahrer Wert)
plt.xlabel(Vorhergesagtes Etikett)
plt.zeigen()
65665Heatmap-1821488
Verwirrungsmatrix-Heatmap

Eine Idee, die wir der Matrix entnehmen können, ist, dass das Modell bei der Klassifizierung von Setosa und Virginica sehr genau war (Richtig positiv / Alle = 1.0). Aber trotzdem, Die Genauigkeit von Versicolor war geringer (13/14 = 0,928).

Unbeaufsichtigtes Lernen:

Unüberwachtes Lernen wird für Daten ohne historische Labels verwendet. Das System unterliegt keinem vorgegebenen Satz von Ausgängen, Korrelationen zwischen Inputs und Outputs oder a „richtige Antwort“. Der Algorithmus muss selbst herausfinden, was er sieht, da es keinen Wegpunktspeicher hat. Das Ziel ist es, die Daten zu untersuchen und eine Art von Mustern oder Strukturen zu finden.

Unüberwachtes Lernen kann unterteilt werden in:

Gruppierung: Clustering ist die Aufgabe, die Population oder Datenpunkte in mehrere Gruppen aufzuteilen, so dass die Datenpunkte einer Gruppe untereinander homogen sind als die verschiedener Gruppen. Es gibt zahlreiche Gruppierungsalgorithmen, einige von ihnen sind: „K-Means-Clustering-Algorithmen“, „mittlere Änderung“, „hierarchische Gruppierung“, etc.

Verband: Eine Assoziationsregel ist eine Methode des unüberwachten Lernens, die verwendet wird, um die Beziehungen zwischen Variablen in einem großen Datenbank. Bestimmen Sie die Menge der Elemente, die zusammen im Datensatz vorkommen.

98361unsuper-8669081
Beispiel für unüberwachtes Lernen

Gruppierung von K-Strümpfen:

Das Ziel des K-Means-Clustering-Algorithmus ist es, Cluster in den Daten zu finden, mit der Anzahl der Gruppen, die durch die Variable K. Der Algorithmus arbeitet iterativ, um jeden Datenpunkt basierend auf den bereitgestellten Eigenschaften einer der K Gruppen zuzuordnen.. .

Die Ergebnisse der Ausführung eines K-Means für einen Datensatz sind:

Schwerpunkte K: Schwerpunkte für jede der im Datensatz identifizierten K-Gruppen.

Labels für Trainingsdaten: Vollständiger Datensatz, der beschriftet ist, um sicherzustellen, dass jeder Datenpunkt einem der Cluster zugeordnet ist.

Verwenden von K-Means-Clustering auf dem Iris-Dataset:

aus sklearn.datasets import load_iris
aus sklearn.cluster importieren KMeans
iris_data=load_iris()   #Laden des Iris-Datasets von sklearn.datasets
iris_df = pd.DataFrame(iris_data.data, Spalten = iris_data.feature_names) #Datenrahmen erstellen
kmeans = KMeans(n_cluster=3,init="k-bedeutet++",   max_iter = 100, n_init = 10, random_state = 0) #Anwenden des Kmeans-Klassifikators
y_kmeans = kmeans.fit_predict(x)
drucken(kmeans.cluster_centers_) #Clusterzentren anzeigen
plt.streuung(x[y_kmeans == 0, 0], x[y_kmeans == 0, 1],s = 100, c="rot", Etikett="Iris-seidig")
plt.streuung(x[y_kmeans == 1, 0], x[y_kmeans == 1, 1],s = 100, c="Blau", Etikett="Iris-versicolour")
plt.streuung(x[y_kmeans == 2, 0], x[y_kmeans == 2, 1],s = 100, c="Grün", Etikett="Iris-Virginica")   #Visualisierung der Cluster - In den ersten beiden Spalten
plt.streuung(kmeans.cluster_centers_[:,   0], kmeans.cluster_centers_[:,1],s = 100, c="Schwarz", Etikett="Schwerpunkte")   #Plotten der Schwerpunkte der Cluster
plt.legende()
plt.zeigen()
11191kmc-2567246
K-means Clustering-Streudiagramm

Eine Idee, die wir von der Ausbreitungsdiagramm ist, dass die Genauigkeit des Modells zur Bestimmung von Setosa und Virginica vergleichsweise höher ist als bei Versicolour.

Fazit:

Wir haben den Iris-Datensatz mit sklearn . untersucht und vorverarbeitet. Datensatz, sowie die Datei Iris.csv verwenden. Was ist mehr, Ich lernte etwas über überwachtes und unüberwachtes Lernen und implementierte den Entscheidungsbaum-Algorithmus und die Gruppierung mit K-Mitteln.

Verweise:

https://www.kaggle.com/sixteenpython/machine-learning-with-iris-dataset

https://towardsdatascience.com/exploring-classifiers-with-python-scikit-learn-iris-dataset-2bcb490d2e1b

https://scikit-learn.org/stable/

https://certes.co.uk/types-of-artificial-intelligence-a-detailed-guide/

Über den Autor:

Hallo Leser, ich bin yashi saxena, und arbeite derzeit bei TCS als System Engineer. ZUM, ML und NLP waren schon immer mein Interesse, Daher bemühe ich mich, mehr über dieses Gebiet zu erfahren. Sie können sich mit mir auf Linkedin verbinden: https://www.linkedin.com/in/yashi-saxena-7a9522194/

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher