Wenn Sie ein Modell für maschinelles Lernen mit Python erstellen, gibt es im Internet viele Beispiele, wenn es sich um ein Verarbeitungsmuster (Klassifizierung, Regression, Clustering usw.) handelt, das in scikit-learn enthalten ist, und das einfach durch Bezugnahme auf diese implementiert werden kann. Ist dies jedoch nicht der Fall, kann es schwierig sein, eine Bibliothek auszuwählen und ein Implementierungsbeispiel zu erhalten. Ein typisches Beispiel ist "** Assoziationsanalyse **", die häufig in der Marketinganalyse verwendet wird. Mit R können Sie problemlos ein Modell mit einer häufig verwendeten Bibliothek erstellen. Mit Python gibt es jedoch überraschend wenige solcher Beispielcodes. Dieser Artikel stellt diesen Teil vor. Übrigens werden in Abschnitt 5.4 meines Buches "Profitable AI" eine Reihe von Verfahren beschrieben, darunter Anwendungsfälle aus einer vorgelagerten Geschäftsperspektive, Verarbeitungsmittel aus den Originaldaten aus dem UCI-Beispieldatensatz und deren Erläuterungen. Ich bin. Wenn Sie interessiert sind, lesen Sie bitte auch dieses Buch.
Amazon Buch https://www.amazon.co.jp/dp/4296106961/
Amazon Kindle https://www.amazon.co.jp/dp/B08F9P726T/
Buchunterstützungsseite https://github.com/makaishi2/profitable_ai_book_info/blob/master/README.md
Verwenden Sie die unten verlinkten Daten.
https://github.com/makaishi2/sample-data/blob/master/data/retail-france.csv
Diese Daten stammen nach einiger Verarbeitung aus dem UCI-Datensatz. Informationen zum bisherigen Verarbeitungsverfahren finden Sie im oben genannten Buch.
Das Folgende ist eine Übersicht über den Implementierungscode der Assoziationsanalyse, der diese Daten verwendet. Für das gesamte Notebook
https://github.com/makaishi2/sample-notebooks/blob/master/profitable-ai/association-sample.ipynb
Ich habe es auf hochgeladen.
Von der für Bücher üblichen Vorverarbeitung wurde in dieser Stichprobe der relevante Teil extrahiert.
#Gemeinsame Vorverarbeitung
#Zusätzliche Warnungen ausblenden
import warnings
warnings.filterwarnings('ignore')
#Import der benötigten Bibliotheken
import pandas as pd
import numpy as np
#Datenrahmen-Anzeigefunktion
from IPython.display import display
#Anpassung der Anzeigeoptionen
#Gleitkomma-Anzeigegenauigkeit bei Pandas
pd.options.display.float_format = '{:.4f}'.format
#Alle Elemente im Datenrahmen anzeigen
pd.set_option("display.max_columns",None)
Importieren Sie die oben gezeigten vorverarbeiteten CSV-Daten in den Datenrahmen.
url = 'https://raw.githubusercontent.com/makaishi2/sample-data/master/data/retail-france.csv'
df = pd.read_csv(url)
display(df[100:110])
Das Ergebnis der Anzeigefunktion sollte so aussehen.
Um eine Assoziationsanalyse für die obigen Daten durchzuführen, müssen die Daten in das horizontale Format konvertiert werden. (Wenn Sie wissen möchten, was horizontaler Besitz ist, lesen Sie bitte das Buch) Der Implementierungscode dafür lautet wie folgt.
#Aggregieren Sie die Anzahl der Produkte anhand der Bestellnummer und der Produktnummer als Schlüssel
w1 = df.groupby(['Bestellnummer', 'Artikelnummer'])[''].sum()
#Überprüfen Sie das Ergebnis
print(w1.head())
Der Zustand von w1 in diesem Stadium ist wie folgt.
#Verschieben Sie die Artikelnummer in die Spalte(Verwendung der Entstapelfunktion)
w2 = w1.unstack().reset_index().fillna(0).set_index('Bestellnummer')
#Größe prüfen
print(w2.shape)
#Überprüfen Sie das Ergebnis
display(w2.head())
Das Ergebnis ist wie folgt:
Verwenden Sie schließlich die Apply-Funktion des Datenrahmens, um jedes Element von einem numerischen Wert in einen True / False-Binärwert umzuwandeln.
#True, abhängig davon, ob das Aggregationsergebnis positiv oder 0 ist/Auf False setzen
basket_df = w2.apply(lambda x: x>0)
#Überprüfen Sie das Ergebnis
display(basket_df.head())
Die Ergebnisse sind wie folgt. Damit ist die Vorverarbeitung für die Assoziationsanalyse abgeschlossen.
Verwenden Sie mlextend als Bibliothek für die Assoziationsanalyse. mlextend, weniger bekannt als sckit-learn, ist eine Bibliothek für maschinelles Python-Lernen, ähnlich wie scicit-learn.
Installieren Sie zunächst die mlxtend-Bibliothek.
#Einführung von mlxtend
!pip install mlxtend
Importieren Sie als Nächstes die Funktionen apriori
und assoziationsregeln
, die in der Analyse verwendet werden sollen.
#Bibliothek laden
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
Zunächst wird eine Methode namens Apriori-Analyse verwendet, um Beziehungen zwischen Produkten mit hohen numerischen Werten zu extrahieren, die als "** Unterstützung **" bezeichnet werden.
#Apriori-Analyse
freq_items1 = apriori(basket_df, min_support = 0.06,
use_colnames = True)
#Überprüfen Sie das Ergebnis
display(freq_items1.sort_values('support',
ascending = False).head(10))
#
print(freq_items1.shape[0])
Das Ergebnis ist wie folgt.
Extrahiert die Beziehung mit einem hohen "** Lift-Wert **" zur zuletzt extrahierten Liste.
#Extraktion von Assoziationsregeln
a_rules1 = association_rules(freq_items1, metric = "lift",
min_threshold = 1)
#Nach Hubwert sortieren
a_rules1 = a_rules1.sort_values('lift',
ascending = False).reset_index(drop=True)
#Überprüfen Sie das Ergebnis
display(a_rules1.head(10))
#Überprüfen Sie die Anzahl der Regeln
print(a_rules1.shape[0])
Die folgende Liste ist das Endergebnis.
In dem Buch verwende ich basierend auf den obigen Ergebnissen auch NetworkX, um das folgende Beziehungsdiagramm zu erstellen.
Die hier erwähnten technischen Begriffe "** Support " und " Lift Value **" werden im Buch erläutert. Bitte beziehen Sie sich darauf.
Recommended Posts