Advertisement
gray_beard

Untitled

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