#!/usr/bin/env python # coding: utf-8 # In[1]: from datetime import datetime print(f'Päivitetty {datetime.now()}') # # K-means # Katsotaan osaako K-means klusterointi jakaa kurjenmiekat kolmeen lajiin (setosa, versicolor, virginica) # terä- (petal) ja verholehtien (sepal) koon mukaan. # In[2]: import pandas as pd import seaborn as sns from sklearn.cluster import KMeans # In[3]: # Esimerkkiaineisto löytyy seaborn-kirjastosta iris = sns.load_dataset('iris') iris # In[4]: # X sisältää vain terä- ja verholehtien pituudet ja leveydet X = iris.drop('species', axis=1) # In[5]: # Mallin sovitus kmeans = KMeans(n_clusters=3, random_state=2) kmeans.fit(X) # In[6]: # Klustereiden numerot (0, 1 ja 2) alkuperäiseen iris-dataan iris['prediction'] = kmeans.predict(X) iris # In[7]: # Katsotaan ristiintaulukoimalla miten hyvin clusterit vastaavat lajikkeita pd.crosstab(iris['species'], iris['prediction']) # In[8]: # Klustereiden keskikohdat pd.DataFrame(kmeans.cluster_centers_, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])