Наглядове навчання в Python
Benjamin Wilson
Director of Research at lateral.io
178 зразків із 3 сортів червоного вина: Barolo, Grignolino і Barbera
Ознаки вимірюють хімічний склад, напр., вміст алкоголю
Візуальні властивості, як-от «інтенсивність кольору»
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
labels = model.fit_predict(samples)
df = pd.DataFrame({'labels': labels, 'varieties': varieties}) ct = pd.crosstab(df['labels'], df['varieties'])print(ct)
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
Ознаки вина мають дуже різні дисперсії!
Дисперсія ознаки вимірює розкид її значень
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Ознаки вина мають дуже різні дисперсії!
Дисперсія ознаки вимірює розкид її значень
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

У kmeans: дисперсія ознаки = її вплив
StandardScaler перетворює кожну ознаку до середнього 0 і дисперсії 1
Такі ознаки називають «стандартизованими»

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler і KMeans мають схожі методи
З StandardScaler використовуйте fit() / transform()
З KMeans використовуйте fit() / predict()
Потрібні два кроки: StandardScaler, потім KMeans
Скористайтесь конвеєром sklearn, щоб об'єднати кілька кроків
Дані передаються з одного кроку до наступного
from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans scaler = StandardScaler() kmeans = KMeans(n_clusters=3)from sklearn.pipeline import make_pipelinepipeline = make_pipeline(scaler, kmeans)pipeline.fit(samples)
Pipeline(steps=...)
labels = pipeline.predict(samples)
За стандартизації ознак:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Без стандартизації було дуже погано:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler — крок «передобробки»
Інші приклади: MaxAbsScaler і Normalizer
Наглядове навчання в Python