Basierend auf den Kaufdaten haben wir eine Clusteranalyse der Kunden durchgeführt. Nach einer Clusteranalyse haben wir die Eigenschaften jedes Segments visualisiert.
Beim maschinellen Lernen ist in vielen Situationen eine Datenanalyse erforderlich. Welche Perspektive betrachten Sie die Daten, die Sie haben, und wie werden Sie sie verarbeiten? Ich würde solche Abhebungen gerne erhöhen, aber die aktuelle Situation ist, dass es nicht viele Lehrmaterialien für die Datenanalyse gibt, die Python verwenden. (Ich bin es leid, über Ayame und Titanic zu sprechen ...) Also dachte ich: "Ist es nicht möglich, die Anzahl der Abhebungen zu erhöhen, indem Lehrmaterialien gekauft werden, mit denen Datenanalysemethoden erlernt und in Python reproduziert werden können, auch wenn es nicht Pthon ist?" Die Bücher, die ich dieses Mal bekam, sind wie folgt.
[Zweck dieses Buches] In diesem Buch wird R aus einer großen Datenmenge verwendet, die im Geschäftsfeld gesammelt wurde. Eine geschäftsstatistische Analysemethode zum Auffinden von Big X, die direkt mit dem Umsatz Ihres Unternehmens verknüpft ist Es ist ein zusammengefasstes Buch. Ein leicht verständlicher Satz einer Einführung und einer tatsächlichen Analysemethode Ich erkläre.
Ich habe die obige Buchdatei verwendet.
・ Informationen zum Kaufverlauf [purchase.csv]
#Bibliothek importieren
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import japanize_matplotlib
%matplotlib inline
#Dateien lesen / anzeigen
buying = pd.read_csv("buying.csv",encoding='cp932')
buying.head()
#Erstellen Sie gemeinsame Verkaufsdaten durch Kreuztabelle
buying_mat = pd.crosstab(buying['id'], buying['category'])
buying_mat.head()
#Machen Sie die gemeinsamen Verkaufsdaten zu einer Dummy-Variablen
#"1" bei mehrmaligem Kauf, andernfalls "0"
buying_mat1 = buying_mat.copy()
for i in range(len(buying_mat1)):
for j in range(len(buying_mat1.columns)):
if buying_mat1.iloc[i, j] > 1:
buying_mat1.iloc[i, j] = 1
buying_mat1.head()
#Importieren einer Bibliothek mit Clusteranalysen
from scipy.cluster.hierarchy import dendrogram, linkage
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
#Implementierung von hierarchischem Clustering
#Stationsmethode x Euklidischer Abstand
linkage_result = linkage(buying_mat1, method='ward', metric='euclidean')
#Bestimmen Sie den Schwellenwert für das Clustering
threshold = 0.7 * np.max(linkage_result[:, 2])
#Visualisierung von hierarchischem Clustering
plt.figure(num=None, figsize=(16, 9), dpi=200, facecolor='w', edgecolor='k')
dendrogram(linkage_result, labels=buying_mat1.index, color_threshold=threshold)
plt.axhline(7, linestyle='--', color='r')
plt.show()
#Ruft den Wert des Clustering-Ergebnisses ab
clustered = fcluster(linkage_result, threshold, criterion='distance')
#Überprüfen Sie das Clustering-Ergebnis
print(clustered)
#Implementierung von hierarchischem Clustering
#Stationsmethode x Euklidischer Abstand
linkage_result2 = linkage(buying_mat, method='ward', metric='euclidean')
#Bestimmen Sie den Schwellenwert für das Clustering
threshold2 = 0.7 * np.max(linkage_result2[:, 2])
#Visualisierung von hierarchischem Clustering
plt.figure(num=None, figsize=(16, 9), dpi=200, facecolor='w', edgecolor='k')
dendrogram(linkage_result2, labels=buying_mat.index, color_threshold=threshold2)
plt.axhline(23, linestyle='--', color='r')
plt.show()
#DataFrame-Konvertierung des Ergebnisses der hierarchischen Clusteranalyse
_class = pd.DataFrame({'class':clustered}, index= buying_mat1.index)
_class.head()
#Kombinieren Sie Originaldaten und Analyseergebnisse
buying_mat2 = pd.concat([buying_mat1, _class] ,axis=1)
buying_mat2.head()
#Überprüfen Sie die Anzahl der Kunden in jedem Segment
buying_mat2.groupby('class').size()
#Berechnen Sie den Durchschnittswert aller Produktkategorien für jedes Segment
cluster_stats = np.round(buying_mat2.groupby('class', as_index=False).mean() ,2)
cluster_stats.head()
#Konvertieren Sie zum Zeichnen von Diagrammen in das Hochformat
mat_melt = pd.melt(cluster_stats, id_vars='class', var_name='Category',value_name='Rate')
mat_melt.head()
#Diagrammsegmentfunktionen
fig = plt.figure(figsize =(20,8))
ax1 = fig.add_subplot(1, 5, 1)
sns.barplot(x='Category', y='Rate', data=mat_melt[mat_melt['class'] == 1], ax=ax1)
plt.xticks(rotation=90)
plt.ylim(0, 1)
ax2 = fig.add_subplot(1, 5, 2)
sns.barplot(x='Category', y='Rate', data=mat_melt[mat_melt['class'] == 2], ax=ax2)
plt.xticks(rotation=90)
plt.ylim(0, 1)
ax3 = fig.add_subplot(1, 5, 3)
sns.barplot(x='Category', y='Rate', data=mat_melt[mat_melt['class'] == 3], ax=ax3)
plt.xticks(rotation=90)
plt.ylim(0, 1)
ax4 = fig.add_subplot(1, 5, 4)
sns.barplot(x='Category', y='Rate', data=mat_melt[mat_melt['class'] == 4], ax=ax4)
plt.xticks(rotation=90)
plt.ylim(0, 1)
ax5 = fig.add_subplot(1, 5, 5)
sns.barplot(x='Category', y='Rate', data=mat_melt[mat_melt['class'] == 5], ax=ax5)
plt.xticks(rotation=90)
#Diagrammsegmentfunktionen(Diagrammzeichnung mit for-Anweisung)
groups = mat_melt.groupby('class')
fig = plt.figure(figsize =(20,8))
for name, group in groups:
_ax = fig.add_subplot(1, 5, int(name))
sns.barplot(x='Category', y='Rate', data=group , ax=_ax)
plt.title('Class' + str(name))
plt.xticks(rotation=90)
plt.ylim(0, 1)
Schätzen Sie die Einkaufsgruppe anhand der Merkmale jedes Segments. · Klasse 1 ・ Hohe Kaufrate für verschiedene Waren ⇒ Eine Schicht verschiedener Warenliebhaber? · Klasse 2 ・ Die Kaufrate von Artikeln ohne Herrenartikel ist gleichmäßig hoch ⇒ Eine Familie mit Kindern / Kundinnen? ・ Klasse3 ・ Hohe Kaufrate für Babyprodukte, Mutterschafts- und Männerprodukte ⇒ Eine Familie mit Kindern / männlichen Kunden? ・ Klasse 4 ・ Hohe Kaufquote von Frauenwaren ⇒ Kundin? ・ Klasse 5 ・ Die Kaufquote von Frauenwaren ist hoch, die Kauftendenz unterscheidet sich jedoch von der der Klasse 4 ⇒ Kundinnen (Kauftendenz unterscheidet sich von Klasse 4)?
Recommended Posts