Генерация данных для кластеризации
Для освоения машинного обучения необходимы данные, которые не всегда имеются под рукой. Поэтому в библиотеке Scikit-learn реализованы функции для их генерации. В частности, датасеты для кластеризации можно создавать с помощью make_blobs из модуля sklearn.datasets. Эта функция позволяет задать следующие настройки:
centers - число центров кластеров;
cluster_std - стандартное отклонение кластеров;
center_box - рамки значений для центров кластеров;
shuffle - флаг, перемешивать ли точки кластеров;
random_state - инициализатор случайных чисел для повторения датасета;
return_centers - флаг, определяющий возвращать ли координаты кластеров;
Например, создадим набор из 1000 точек с 3 кластерами и 2 признаками, центры кластеров заданы в квадрате [2, 100]:
from sklearn.datasets import make_blobs import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set()
X, y, centers = make_blobs(n_samples=1000, centers=3, n_features=2, center_box=[2,100], return_centers=True, random_state=0) X = pd.DataFrame(X, columns=['feat1', 'feat2']) X.head()
Визуализируем набор с помощью библиотеки Seaborn (читать подробнее):
plt.figure(figsize=(15,7)) plt.rc('axes', labelsize=20) sns.scatterplot(data=X, x='feat1', y='feat2', hue=y, palette= 'rocket') plt.scatter(centers[:,0], centers[:,1], s=50, c='g', marker='o')