Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.85 KB | None | 0 0
  1. import pandas as pd
  2.  
  3. from sklearn.preprocessing import StandardScaler
  4. from sklearn.cluster import KMeans
  5. import seaborn as sns
  6. import matplotlib.pyplot as plt
  7.  
  8. import warnings
  9. warnings.filterwarnings("ignore")
  10.  
  11. # определим функцию отрисовки графиков попарных признаков для кластеров
  12. def show_clusters_on_plot(df, x_name,y_name, cluster_name):
  13.     plt.figure(figsize = (10,10))
  14.     sns.scatterplot(df[x_name], df[y_name],
  15.            hue = df[cluster_name], palette = 'Paired'
  16.        )
  17.     plt.title('{} vs {}'.format(x_name, y_name))
  18.     plt.show()
  19.  
  20. # читаем данные
  21. travel = pd.read_csv('/datasets/tripadvisor_review_case.csv')
  22. print(travel.shape)
  23. # стандартизируем данные
  24. sc = StandardScaler()
  25. X_sc = sc.fit_transform(travel)
  26.  
  27. # задаём модель k_means с числом кластеров 3
  28. km = KMeans(n_clusters = 3)
  29. # прогнозируем кластеры для наблюдений (алгоритм присваивает им номера от 0 до 4)
  30. labels = km.fit_predict(X_sc)
  31.  
  32. # сохраняем метки кластера в поле нашего датасета
  33. travel['cluster_km'] = labels
  34.  
  35. # выводим статистику по средним значениям наших признаков по кластеру
  36. travel.groupby('cluster_km').mean()
  37.  
  38. # отрисуем графики для пары признаков "соки" и "религия"
  39. show_clusters_on_plot(travel, 'Average user feedback on juice bars', 'Average user feedback on religious institutions', 'cluster_km')
  40.  
  41. # отрисуем графики для пары признаков "соки" и "рестораны"
  42. show_clusters_on_plot(travel, 'Average user feedback on juice bars', 'Average user feedback on restaurants', 'cluster_km')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement