Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
1,493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 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.  
  9. # определим функцию отрисовки графиков попарных признаков для кластеров
  10. def show_clusters_on_plot(df, x_name,y_name, cluster_name):
  11. plt.figure(figsize = (10,10))
  12. sns.scatterplot(df[x_name], df[y_name],
  13. hue = df[cluster_name], palette = 'Paired'
  14. )
  15. plt.title('{} vs {}'.format(x_name, y_name))
  16. plt.show()
  17.  
  18. # читаем данные
  19. travel = pd.read_csv('/datasets/tripadvisor_review_case.csv')
  20. print(travel.shape)
  21.  
  22. # стандартизируем данные
  23. sc = StandardScaler()
  24. x_sc = sc.fit_transform(travel)
  25.  
  26. # задаём модель k_means с числом кластеров 3
  27. km = KMeans(n_clusters = 3)
  28. # прогнозируем кластеры для наблюдений (алгоритм присваивает им номера от 0 до 4)
  29. labels = km.fit_predict(x_sc)
  30.  
  31. # сохраняем метки кластера в поле датасета
  32. travel['cluster_km'] = labels
  33.  
  34. # выводим статистику по средним значениям признаков по кластеру
  35. travel.groupby(['cluster_km']).mean()
  36.  
  37. # отрисуем графики для пары признаков "соки" и "религия"
  38. show_clusters_on_plot(travel, 'Average user feedback on juice bars',
  39. 'Average user feedback on religious institutions', 'cluster_km')
  40.  
  41. # отрисуем графики для пары признаков "соки" и "рестораны"
  42. show_clusters_on_plot(travel, 'Average user feedback on juice bars',
  43. 'Average user feedback on restaurants', 'cluster_km')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement