Кластеризация проекта 1 (часть 2)..
С возвращением. В этом посте мы будем реализовывать часть 2 проекта, посвященную кластеризации в ML.
Некоторые из других лучших сериалов —
100 дней: серия дипломов по науке о данных и машинному обучению с проектами
Серия технических интервью — тщательно подобранный список вопросов по программированию
Полный дизайн системы с наиболее популярными сериями вопросов
Полная серия проектов по визуализации и предварительной обработке данных
Технический бюллетень —
Если вам интересно, вы можете подписаться на мой информационный бюллетень, через который я рассылаю советы по техническим интервью, методы, шаблоны, хаки — проекты по разработке программного обеспечения, машинному обучению, науке о данных, стартапам и технологиям более чем 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
Все, ребята. Успокойтесь и продолжайте кодить :)
Оставайтесь с нами и, конечно же, позвольте мне закончить этот пост цитатой Стива Джобса ;)
«Помнить, что ты умрешь, — это лучший известный мне способ избежать ловушки мысли, что тебе есть что терять. Ты уже голый. Нет причин не следовать своему сердцу».