Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2017 (14.x) en latere versies
van Azure SQL Managed Instance
In deel drie van deze vierdelige zelfstudiereeks bouwt u een K-Means-model in Python om clustering uit te voeren. In het volgende deel van deze reeks implementeert u dit model in een database met SQL Server Machine Learning Services of op Big Data-clusters.
In deel drie van deze vierdelige zelfstudiereeks bouwt u een K-Means-model in Python om clustering uit te voeren. In het volgende deel van deze reeks implementeert u dit model in een database met SQL Server Machine Learning Services.
In deel drie van deze vierdelige zelfstudiereeks bouwt u een K-Means-model in Python om clustering uit te voeren. In het volgende deel van deze reeks implementeert u dit model in een database met Azure SQL Managed Instance Machine Learning Services.
In dit artikel leert u het volgende:
- Het aantal clusters definiëren voor een K-Means-algoritme
- Clustering uitvoeren
- De resultaten analyseren
In deel 1 hebt u de vereisten geïnstalleerd en de voorbeelddatabase hersteld.
In deel twee hebt u geleerd hoe u de gegevens uit een database voorbereidt om clustering uit te voeren.
In deel vier leert u hoe u een opgeslagen procedure maakt in een database die clustering in Python kan uitvoeren op basis van nieuwe gegevens.
Vereiste voorwaarden
- In deel drie van deze zelfstudie wordt ervan uitgegaan dat u aan de vereisten van deel 1 hebt voldaan en dat u de stappen in deel twee hebt voltooid.
Het aantal clusters definiëren
Als u uw klantgegevens wilt clusteren, gebruikt u het K-Means-clustering-algoritme , een van de eenvoudigste en meest bekende manieren om gegevens te groeperen. Meer informatie over K-Means vindt u in een volledige handleiding voor het K-means-clustering-algoritme.
Het algoritme accepteert twee invoerwaarden: de gegevens zelf en een vooraf gedefinieerd getal 'k' dat het aantal clusters vertegenwoordigt dat moet worden gegenereerd. De uitvoer is k-clusters met de invoergegevens die zijn gepartitioneerd tussen de clusters.
Het doel van K-means is om de items in k-clusters te groeperen, zodat alle items in hetzelfde cluster zo vergelijkbaar zijn als elkaar en zo verschillend mogelijk zijn van items in andere clusters.
Als u het aantal clusters wilt bepalen dat het algoritme moet gebruiken, gebruikt u een plot van de som van kwadraten binnen groepen, op basis van het aantal geëxtraheerde clusters. Het juiste aantal clusters dat moet worden gebruikt, bevindt zich in de bocht of 'elleboog' van de plot.
################################################################################################
## Determine number of clusters using the Elbow method
################################################################################################
cdata = customer_data
K = range(1, 20)
KM = (sk_cluster.KMeans(n_clusters=k).fit(cdata) for k in K)
centroids = (k.cluster_centers_ for k in KM)
D_k = (sci_distance.cdist(cdata, cent, 'euclidean') for cent in centroids)
dist = (np.min(D, axis=1) for D in D_k)
avgWithinSS = [sum(d) / cdata.shape[0] for d in dist]
plt.plot(K, avgWithinSS, 'b*-')
plt.grid(True)
plt.xlabel('Number of clusters')
plt.ylabel('Average within-cluster sum of squares')
plt.title('Elbow for KMeans clustering')
plt.show()
Op basis van de grafiek lijkt het erop dat k = 4 een goede waarde is om te proberen. Deze k-waarde groepeert de klanten in vier clusters.
Clustering uitvoeren
In het volgende Python-script gebruikt u de KMeans-functie uit het sklearn-pakket.
################################################################################################
## Perform clustering using Kmeans
################################################################################################
# It looks like k=4 is a good number to use based on the elbow graph.
n_clusters = 4
means_cluster = sk_cluster.KMeans(n_clusters=n_clusters, random_state=111)
columns = ["orderRatio", "itemsRatio", "monetaryRatio", "frequency"]
est = means_cluster.fit(customer_data[columns])
clusters = est.labels_
customer_data['cluster'] = clusters
# Print some data about the clusters:
# For each cluster, count the members.
for c in range(n_clusters):
cluster_members=customer_data[customer_data['cluster'] == c][:]
print('Cluster{}(n={}):'.format(c, len(cluster_members)))
print('-'* 17)
print(customer_data.groupby(['cluster']).mean())
De resultaten analyseren
Nu u clustering hebt uitgevoerd met behulp van K-Means, is de volgende stap het analyseren van het resultaat en te zien of u bruikbare informatie kunt vinden.
Bekijk de gemiddelde clusterwaarden en clustergrootten die zijn afgedrukt uit het vorige script.
Cluster0(n=31675):
-------------------
Cluster1(n=4989):
-------------------
Cluster2(n=1):
-------------------
Cluster3(n=671):
-------------------
customer orderRatio itemsRatio monetaryRatio frequency
cluster
0 50854.809882 0.000000 0.000000 0.000000 0.000000
1 51332.535779 0.721604 0.453365 0.307721 1.097815
2 57044.000000 1.000000 2.000000 108.719154 1.000000
3 48516.023845 0.136277 0.078346 0.044497 4.271237
De vier clustermiddelen worden gegeven met behulp van de variabelen die zijn gedefinieerd in deel 1:
- orderRatio = retourorderverhouding (totaal aantal orders gedeeltelijk of volledig geretourneerd versus het totale aantal orders)
- itemsRatio = verhouding retouritem (totaal aantal geretourneerde items versus het aantal gekochte artikelen)
- monetaryRatio = retourbedragverhouding (totale monetaire hoeveelheid geretourneerde items versus het aangeschafte bedrag)
- frequency = retourfrequentie
Gegevensanalyse met behulp van K-Means vereist vaak verdere analyse van de resultaten en verdere stappen om elk cluster beter te begrijpen, maar het kan een aantal goede leads bieden. Hier volgen een aantal manieren waarop u deze resultaten kunt interpreteren:
- Cluster 0 lijkt een groep klanten te zijn die niet actief zijn (alle waarden zijn nul).
- Cluster 3 lijkt een groep te zijn die opvalt in termen van retourgedrag.
Cluster 0 is een set klanten die duidelijk niet actief zijn. Misschien kunt u marketinginspanningen richten op deze groep om een interesse voor aankopen te activeren. In de volgende stap voert u een query uit op de database voor de e-mailadressen van klanten in cluster 0, zodat u een marketing-e-mail naar hen kunt verzenden.
De hulpbronnen opschonen
Als u niet verdergaat met deze zelfstudie, verwijdert u de tpcxbb_1gb-database.
Volgende stappen
In deel drie van deze reeks zelfstudies hebt u de volgende stappen uitgevoerd:
- Het aantal clusters definiëren voor een K-Means-algoritme
- Clustering uitvoeren
- De resultaten analyseren
Als u het machine learning-model wilt implementeren dat u hebt gemaakt, volgt u deel vier van deze reeks zelfstudies: