LoginSignup
0
2

More than 3 years have passed since last update.

<科目> 機械学習 第六章:アルゴリズム2(k-means)

Last updated at Posted at 2019-12-13

<科目> 機械学習

目次
第一章:線形回帰モデル
第二章:非線形回帰モデル
第三章:ロジスティク回帰モデル
第四章:主成分分析
第五章:アルゴリズム1(k近傍法(kNN))
第六章:アルゴリズム2(k-means)
第七章:サポートベクターマシン

第六章:アルゴリズム2(k-means)

k-平均法(k-means)とは

  • 教師なし学習
  • クラスタリング手法
    • クラスタリング・・・特徴の似ているもの同士をグループ化
  • 与えられたデータをk個のクラスタに分類する

k平均法(k-means)のアルゴリズム

  • 各クラスタ中心の初期値を設定する
  • 各データ点に対して、各クラスタ中心との距離を計算し、最も距離が近いクラスタを割り当てる
  • 各クラスタの平均ベクトル(中心)を計算する
  • 収束するまで2, 3の処理を繰り返す
  • 手順
    • 各クラスタ中心の初期値を設定する
    • 各データ点に対して、各クラスタ中心との距離を計算し、最も距離が近いクラスタを割り当てる
    • 各クラスタの平均ベクトル(中心)を計算する
    • クラスタの再割り当てと、中心の更新を繰り返す
  • 中心の初期値を変えるとクラスタリング結果も変わりうる
  • kの値を変えるとクラスタリング結果も変わる

(演習)k平均法(k-means)を利用して3つのクラスタに分類する

#https://datahexa.com/kmeans-clustering-with-wine-dataset/参考
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import cluster, preprocessing, datasets

from sklearn.cluster import KMeans

wine = datasets.load_wine()
X = wine.data
X.shape
結果

y=wine.target
y.shape
結果
(178,)
wine.target_names
結果
array(['class_0', 'class_1', 'class_2'], dtype='<U7')
model = KMeans(n_clusters=3)
labels = model.fit_predict(X)
df = pd.DataFrame({'labels': labels})
type(df)
結果
pandas.core.frame.DataFrame
def species_label(theta):
    if theta == 0:
        return wine.target_names[0]
    if theta == 1:
        return wine.target_names[1]
    if theta == 2:
        return wine.target_names[2]
df['species'] = [species_label(theta) for theta in wine.target]
pd.crosstab(df['labels'], df['species'])

スクリーンショット 2019-12-13 17.46.05.png

関連サイト
第一章:線形回帰モデル
第二章:非線形回帰モデル
第三章:ロジスティク回帰モデル
第四章:主成分分析
第五章:アルゴリズム1(k近傍法(kNN))
第六章:アルゴリズム2(k-means)
第七章:サポートベクターマシン

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2