Кластеризация проекта 1 (часть 2)..

С возвращением. В этом посте мы будем реализовывать часть 2 проекта, посвященную кластеризации в ML.

Некоторые из других лучших сериалов —

Серия 30 дней обработки естественного языка (NLP)

Серия 30 дней разработки данных с проектами

60 дней серии Data Science и ML с проектами

100 дней: серия дипломов по науке о данных и машинному обучению с проектами

23 метода обработки данных, которые вы должны знать

Серия технических интервью — тщательно подобранный список вопросов по программированию

Полный дизайн системы с наиболее популярными сериями вопросов

Полная серия проектов по визуализации и предварительной обработке данных

Полная серия Python с проектами

Полная серия Advanced Python с проектами

Kaggle Best Notebooks, которые научат вас большему

Полное руководство по Git для разработчиков

Все ресурсы по науке о данных и машинному обучению

210 проектов по машинному обучению

30 дней эксплуатации машинного обучения

Технический бюллетень —

Если вам интересно, вы можете подписаться на мой информационный бюллетень, через который я рассылаю советы по техническим интервью, методы, шаблоны, хаки — проекты по разработке программного обеспечения, машинному обучению, науке о данных, стартапам и технологиям более чем 30 тысячам читателей. Вы можете подписаться на Tech Brew:



Первую часть проекта можно найти здесь:



День 26: 60 дней серии «Наука о данных и машинное обучение
Проект по кластеризации 1 (часть 1)..naina0412.medium.com»



Данные для этого проекта можно найти по ссылке ниже —



Давай погрузимся —

# Distribution Plots
plt.figure(figsize=(16,12))
# Spending Score
plt.subplot(3,3,1)
plt.title('Spending Score\n', color='black')
sns.distplot(df['Spending Score (1-100)'], color='#8155BA')
# Annual Income 
plt.subplot(3,3,3)
plt.title('Annual Income\n', color='black')
sns.distplot(df['Annual Income (k$)'], color='#F4B9B8')
# Age
plt.subplot(3,3,2)
plt.title('Age\n', color='black')
sns.distplot(df['Age'], color='#85D2D0')
plt.suptitle(' Distribution Plots of Age, Annual Income and Spending Score \n', color='#C8651B', size = 22)
plt.tight_layout()

plt.show()

Выход -

# Label Encoding : To covert categorical variable to Numeric Variable
from sklearn.preprocessing import LabelEncoder
l = LabelEncoder()
df['Gender'] = l.fit_transform(df.iloc[:,0])
# Standardization 
x = df.iloc[:,0:].values 
sc = StandardScaler()
X = sc.fit_transform(x)
# Principal Component Analysis 
pca = PCA(n_components = 2) 
X_pca = pca.fit_transform(X)
# Find the optimum number for the cluster
from sklearn.cluster import KMeans
l1 = []
for i in range(1,13):
    k_c = KMeans(n_clusters = i, init ='k-means++', random_state=42)
    k_c.fit(X_pca)
    l1.append(k_c.inertia_)
plt.figure(figsize=(12,7))
plt.plot(range(1, 13), l1)
plt.title('The Elbow Method', color='black',fontsize='23')
plt.xlabel('Number of clusters')
plt.xticks(np.arange(1,13))

plt.show()

Выход -

# With 4 clusters
kmeans = KMeans(n_clusters = 4, init ='k-means++', random_state=42,max_iter=300,n_init=10)
y_kmeans = kmeans.fit_predict(X_pca)
plt.figure(1 , figsize = (16 ,9))
plt.scatter(X_pca[y_kmeans == 0, 0], X_pca[y_kmeans == 0, 1], s = 50, c = 'blue', label = 'Cluster1')
plt.scatter(X_pca[y_kmeans == 1, 0], X_pca[y_kmeans == 1, 1], s = 50, c = 'green', label = 'Cluster2')
plt.scatter(X_pca[y_kmeans == 2, 0], X_pca[y_kmeans == 2, 1], s = 50, c = 'pink', label = 'Cluster3')
plt.scatter(X_pca[y_kmeans == 3, 0], X_pca[y_kmeans == 3, 1], s = 50, c = 'purple', label = 'Cluster4')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 250, c = 'orange', label = 'Centroids')
plt.title("Customers' Clusters")
plt.xlabel('PCA : 1', color='red')
plt.ylabel('PCA : 2', color='red')
plt.legend()

plt.show()

Выход -

# With 5 Clusters
kmeans = KMeans(n_clusters = 5, init ='k-means++', random_state=42,max_iter=300,n_init=10)
y_kmeans = kmeans.fit_predict(X_pca)
plt.figure(1 , figsize = (16 ,9))
plt.scatter(X_pca[y_kmeans == 0, 0], X_pca[y_kmeans == 0, 1], s = 50, c = 'blue', label = 'Cluster-1')
plt.scatter(X_pca[y_kmeans == 1, 0], X_pca[y_kmeans == 1, 1], s = 50, c = 'green', label = 'Cluster-2')
plt.scatter(X_pca[y_kmeans == 2, 0], X_pca[y_kmeans == 2, 1], s = 50, c = 'pink', label = 'Cluster-3')
plt.scatter(X_pca[y_kmeans == 3, 0], X_pca[y_kmeans == 3, 1], s = 50, c = 'purple', label = 'Cluster-4')
plt.scatter(X_pca[y_kmeans == 4, 0], X_pca[y_kmeans == 4, 1], s = 50, c = 'grey', label = 'Cluster-5')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 250, c = 'orange', label = 'Centroids')
plt.title("Customers' Clusters")
plt.xlabel('PCA : 1', color='red')
plt.ylabel('PCA : 2', color='red')
plt.legend()

plt.show()

Выход -

# Hierarchical Clustering ( Dendogram)
X=df.iloc[:, [3,4]].values
plt.figure(figsize=(20,10))
dendrogram=ch.dendrogram(ch.linkage(X,method = 'ward'))
plt.title('Hierarchical Clustering (Dendrogram plot)')

plt.show()

Выход -

# Segmentation using Age and Spending Score
df_one = df[['Age','Spending Score (1-100)']].iloc[:,:].values
l2=[]
for i in range(1,13):
    kas = (KMeans(n_clusters = i ,init='k-means++', n_init = 10 ,max_iter=300, 
                        tol=0.0001,  random_state= 42 ) )
    kas.fit(df_one)
    l2.append(kas.inertia_)
#Optimum Clusters
plt.figure(figsize=(12,7))
plt.plot(range(1, 13), l2)
plt.title('The Elbow Method', color='black',fontsize='23')
plt.xlabel('Number of clusters')
plt.xticks(np.arange(1,13))
plt.show()

Выход -

a = (KMeans(n_clusters = 4 ,init='k-means++', n_init = 10 ,max_iter=300, 
                         random_state= 42 ) )
a.fit(df_one)
l = a.labels_
cn = a.cluster_centers_
# plot
plt.figure(figsize=(12,10))
plt.scatter( x = 'Age' ,y = 'Spending Score (1-100)' , data = df , c = l , 
            s = 100 )
plt.scatter(x = cn[: , 0] , y =  cn[: , 1] , s = 400 , c = 'blue' , alpha = 0.5)
plt.ylabel('Spending Score (1-100)') , plt.xlabel('Age')
plt.title('Customer Segmentation using Age and Spending Score')

plt.show()

Выход -

# Segmentation using Annual Income and Spending Score
df_two = df[['Annual Income (k$)' , 'Spending Score (1-100)']].iloc[: , :].values
l3 = []
for i in range(1 , 13):
    kis = (KMeans(n_clusters = i ,init='k-means++', n_init = 10 ,max_iter=300, 
                          random_state= 42) )
    kis.fit(df_two)
    l3.append(kis.inertia_)
plt.figure(figsize=(12,7))
plt.plot(range(1, 13), l3)
plt.title('The Elbow Method', color='black',fontsize='23')
plt.xlabel('Number of clusters')
plt.xticks(np.arange(1,13))

plt.show()

Выход -

asi = (KMeans(n_clusters = 5 ,init='k-means++', n_init = 10 ,max_iter=300, 
                         random_state= 42 ) )
asi.fit(df_two)
l_one = asi.labels_
cn_one = asi.cluster_centers_
# plot
plt.figure(figsize=(12,10))
plt.scatter( x = 'Annual Income (k$)' ,y = 'Spending Score (1-100)' , data = df , c = l_one , 
            s = 100 )
plt.scatter(x = cn_one[: , 0] , y =  cn_one[: , 1] , s = 400 , c = 'blue' , alpha = 0.5)
plt.ylabel('Spending Score (1-100)') , plt.xlabel('Age')
plt.title('Customer Segmentation using Annual Income and Spending Score')

plt.show()

Выход -

# Customer Segmentation using Age and Annual Income
df_three = df[['Age','Annual Income (k$)' ]].iloc[: , :].values
l4 = []
for i in range(1 , 13):
    kaa = (KMeans(n_clusters = i ,init='k-means++', n_init = 10 ,max_iter=300, 
                          random_state= 42) )
    kaa.fit(df_three)
    l4.append(kaa.inertia_)
# Plot 
plt.figure(figsize=(12,7))
plt.plot(range(1, 13), l4)
plt.title('The Elbow Method', color='black',fontsize='23')
plt.xlabel('Number of clusters')
plt.xticks(np.arange(1,13))

plt.show()

Выход -

aa = (KMeans(n_clusters = 4 ,init='k-means++', n_init = 10 ,max_iter=300, 
                         random_state= 42 ) )
aa.fit(df_three)
l_two = aa.labels_
cn_two = aa.cluster_centers_
# plot
plt.figure(figsize=(12,10))
plt.scatter( x = 'Age' ,y = 'Annual Income (k$)' , data = df , c = l_two , 
            s = 100 )
plt.scatter(x = cn_two[: , 0] , y =  cn_two[: , 1] , s = 400 , c = 'blue' , alpha = 0.5)
plt.ylabel('Annual Income (k$)') , plt.xlabel('Age')
plt.title('Customer Segmentation using Age and Annual Income')

plt.show()

Выход -

Проект 2 (кластеризация в машинном обучении): скоро будет

Следите и оставайтесь с нами.

Для других проектов настройтесь на —

Создание конвейеров машинного обучения (с кодом)



Рекуррентная нейронная сеть с Keras



Кластеризация данных геолокации в Python с использованием DBSCAN и K-Means



Распознавание выражения лица с помощью Keras



Настройка гиперпараметров с помощью Keras Tuner



Пользовательские слои в Keras



Все, ребята. Успокойтесь и продолжайте кодить :)

Оставайтесь с нами и, конечно же, позвольте мне закончить этот пост цитатой Стива Джобса ;)

«Помнить, что ты умрешь, — это лучший известный мне способ избежать ловушки мысли, что тебе есть что терять. Ты уже голый. Нет причин не следовать своему сердцу».