SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
各言語の k-means 比較
2015/06/30
第10回「続・わかりやすいパターン認識」読書会
自己紹介
名前
◦ 内山 雄司
職業
◦ エンジニア (プログラマ)
私的なアカウント
◦ Twitter @y__uti
◦ はてなブログ http://y-uti.hatenablog.jp
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 2
今日の発表内容
各言語の k-means を比較調査してみました
◦ MATLAB
◦ R
◦ Python
いろいろと違いがありました
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 3
調査対象
MATLAB
◦ Statistics Toolbox の kmeans 関数
R
◦ stats パッケージの kmeans 関数
Python
◦ scikit-learn の KMeans クラス
◦ SciPy の kmeans 関数
◦ SciPy の kmeans2 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 4
MATLAB の k-means
Statistics Toolbox (要購入) の kmeans 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 5
>> load fisheriris;
>> [idx, C, sumd] = kmeans(meas, 3);
>> idx'
ans =
1 列から 18 列
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
19 列から 36 列
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
37 列から 54 列
3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2
(省略)
127 列から 144 列
2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1
145 列から 150 列
1 1 2 1 1 2
>> sum(sumd)
ans =
78.8514
R の k-means
stats パッケージ (標準) の kmeans 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 6
> km <- kmeans(iris[,1:4], 3)
> km$cluster
[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
[37] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[73] 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 2 1
[109] 1 1 1 1 1 2 2 1 1 1 1 2 1 2 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1
[145] 1 1 2 1 1 2
> km$tot.withinss
[1] 78.85144
Python の k-means [1/3]
scikit-learn の sklearn.cluster.KMeans クラス
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 7
>>> from sklearn import *
>>> iris = datasets.load_iris()
>>> kmeans = cluster.KMeans(n_clusters=3)
>>> kmeans.fit(iris.data)
>>> kmeans.labels_
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2,
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2], dtype=int32)
>>> km.inertia_
78.940841426146164
Python の k-means [2/3]
SciPy の scipy.cluster.vq.kmeans 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 8
>>> from scipy.cluster.vq import *
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> [codebook, distortion] = kmeans(iris.data, 3)
>>> codebook
array([[ 5.006 , 3.418 , 1.464 , 0.244 ],
[ 5.9016129 , 2.7483871 , 4.39354839, 1.43387097],
[ 6.85 , 3.07368421, 5.74210526, 2.07105263]])
>>> distortion
0.64883949489533388
◦ クラスタの番号を戻さない
Python の k-means [3/3]
SciPy の scipy.cluster.vq.kmeans2 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 9
>>> from scipy.cluster.vq import *
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> [centroid, label] = kmeans2(iris.data, 3)
>>> centroid
array([[ 5.885 , 2.74 , 4.37666667, 1.41833333],
[ 5.006 , 3.418 , 1.464 , 0.244 ],
[ 6.8275 , 3.07 , 5.7 , 2.0625 ]])
>>> label
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2,
2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2,
0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0])
比較結果
基本的な引数
戻り値
オプション
◦ 終了条件・実行回数
◦ セントロイドの初期配置
◦ 反復アルゴリズム
◦ 距離関数
◦ 空クラスタ発生時の挙動
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 10
基本的な引数
MATLAB R sklearn SciPy-1 SciPy-2
データ ● ● ● ● ●
クラスタ数 ● ● ○ (8) ● ●
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 11
◦ 記号の意味 (この後のスライドで使う記号を含む)
◦ ● 必須
◦ ◎ 既定の項目
◦ ○ 任意 (かっこ内の値は既定値)
◦ - 該当する設定項目なし
戻り値 [1/2]
MATLAB R sklearn SciPy-1 SciPy-2
クラスタラベル ○ ○ ○ - ○
セントロイド ○ ○ ○ ○ ○
距離行列 ○ - - - -
クラスタ内の合計距離 ○ ○ - - -
の全クラスタ総和 - ○ ○ △ (注) -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 12
◦ 距離行列について
◦ SciPy-1 各点からセントロイドへのユークリッド距離の平均を返す
◦ その他 二乗ユークリッド距離を用いる (平方根をとらない)
戻り値 [2/2] (R のみ)
R others
各データから全データの重心への距離の総和 (totss) ○ -
セントロイドから全データの重心への距離の
重み付け総和 (betweenss)
○ -
各クラスタのデータ数 (size) ○ -
実行された反復回数 (iter) ○ -
エラーコード (ifault) ○ -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 13
終了条件・実行回数
MATLAB R sklearn SciPy-1 SciPy-2
最大反復回数 ○ (100) ○ (10) ○ (300) - ○ (10)
閾値 - - ○ (1e-4) ○ (1e-5) -
k-means 実行回数 ○ (1) ○ (1) ○ (10) ○ (20) -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 14
◦ 閾値
◦ sklearn セントロイドの移動距離の二乗和が閾値未満になれば終了
◦ SciPy-1 セントロイドからの距離の平均減少幅が閾値未満になれば終了
セントロイドの初期配置
MATLAB R sklearn SciPy-1 SciPy-2
k-means++ ◎ - ◎ - -
データ点からランダム ○ ◎ ○ ◎ ○
データ範囲から生成 ○ - - - ◎
予備クラスタリング ○ - - - -
ユーザ指定 ○ ○ ○ ○ ○
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 15
◦ データ範囲から生成
◦ MATLAB データが存在する範囲の一様分布から
◦ SciPy-2 データの平均と共分散をパラメータとする正規分布から
◦ 予備クラスタリング
◦ データの 10% 標本で k-means を実行して決定 (その初期配置はデータ点からランダム)
k-means++
セントロイドの初期配置の方法
◦ データ点から k 個を選択する
◦ ただし「ランダムに k 個」選ぶのではない
選び方
◦ 最初の一つ
◦ データ点の中から等確率で選ぶ
◦ 二番目以降
◦ 「最も近いセントロイドとの距離の二乗」に応じた確率で選ぶ
このように選ぶと
◦ クラスタ内距離の総和 𝜙 = 𝑥∈𝑋 min 𝑐∈𝐶 𝑥 − 𝑐 2 について
◦ 期待値が E 𝜙 ≤ 8 log 𝑘 + 2 𝜙opt で押さえられる …らしい
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 16
反復アルゴリズム
MATLAB R sklearn SciPy-1 SciPy-2
Lloyd (Forgy) ◎ ○ ◎ ◎ ◎
MacQueen - ○ - - -
Hartigan-Wong - ◎ - - -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 17
各アルゴリズムの特徴 (一部の論文 + R の実装より)
◦ Lloyd (Forgy)
◦ 各データをクラスタに割り当て。全データの割り当て後にセントロイドを更新
◦ MacQueen
◦ 一つのデータをクラスタに割り当てるたびにセントロイドを更新
◦ Hartigan-Wong
◦ 次のスライドで説明
Hartigan-Wong の方法
以下の反復をクラスタ割り当てが変化しなくなるまで繰り返す
For each 𝑥𝑖 ∈ 𝑋
◦ 点 𝑥𝑖 を現在のクラスタから外す
◦ クラスタが 𝑥𝑖 ただ一点を含む場合は 𝑥𝑖 の処理をスキップする
◦ 次式を最小にするクラスタ 𝐶 𝑘 に 𝑥𝑖 を割り当てる
Δ 𝑥𝑖, 𝐶 𝑘 =
𝑥 ∈ 𝐶 𝑘
𝑥 ∈ 𝐶 𝑘 + 1
∙ 𝑥𝑖 − 𝑐 𝑘
2
このように計算すると
◦ Hartigan-Wong の局所解は Lloyd の局所解の真部分集合 …らしい
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 18
距離関数 (MATLAB のみ)
MATLAB others
二乗ユークリッド距離 ◎ -
マンハッタン距離 ○ -
1 - コサイン類似度 ○ -
1 - 標本相関 ○ -
ハミング距離 ÷ 次元数 ○ -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 19
空クラスタ発生時の挙動
MATLAB R sklearn SciPy-1 SciPy-2
エラーとして停止 ○ ◎ - ◎ ○
初期値を変えて再実行 - - - - ◎
クラスタ数を減らす ○ ◎ - - -
他のクラスタから奪う ◎ - ◎ - -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 20
◦ R の実装
◦ Hartigan-Wong エラーとして停止
◦ その他 クラスタ数を減らす
◦ 他のクラスタから奪う
◦ 全データの中でセントロイドからの距離が最大のものを見つける
◦ その点のみを含むクラスタを新たに生成する
その他
細かなオプションはいろいろ・・・
◦ オンライン更新 (MATLAB)
◦ 並列計算に関するオプション (MATLAB, scikit-learn)
◦ 計算中の詳細情報の表示 (各言語)
細かいので省略
終わり
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 21
参考 [1/6]
MATLAB ドキュメンテーション - Statistics Toolbox
◦ k 平均クラスタリング
◦ http://jp.mathworks.com/help/stats/kmeans.html
◦ 標本データセット
◦ http://jp.mathworks.com/help/stats/_bq9uxn4.html
The R Reference Index (PDF)
◦ http://cran.r-project.org/doc/manuals/r-release/fullrefman.pdf
◦ 0624 ページ "Edgar Anderson's Iris Data"
◦ 1362 ページ "K-Means Clustering"
◦ いずれも Version 3.2.1 (2015-06-18) での情報
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 22
参考 [2/6]
scikit-learn
◦ KMeans
◦ http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
◦ The Iris Dataset
◦ http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html
SciPy
◦ kmeans
◦ http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans.html
◦ kmeans2
◦ http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans2.html
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 23
参考 [3/6]
Lloyd
◦ Lloyd, S. Least squares quantization in PCM. IEEE Transactions on Information Theory 28(2), 129–137, Mar
1982.
[https://dx.doi.org/10.1109/TIT.1982.1056489] (有料)
Forgy
◦ E.W. Forgy. Cluster analysis of multivariate data: efficiency versus interpretability of classifications.
Biometrics 21: 768–769. 1965. (URL 不明)
MacQueen
◦ MacQueen, J. Some methods for classification and analysis of multivariate observations. Proceedings of
the Fifth Berkeley Symposium on Mathematical Statistics and Probability, Volume 1: Statistics, 281–297,
University of California Press, Berkeley, Calif., 1967.
[http://projecteuclid.org/download/pdf_1/euclid.bsmsp/1200512992]
Hartigan-Wong
◦ J. A. Hartigan and M. A. Wong. Algorithm AS 136: A K-Means Clustering Algorithm. Journal of the Royal
Statistical Society. Series C (Applied Statistics), Vol. 28, No. 1 (1979), pp. 100-108.
[http://www.jstor.org/stable/2346830] (有料)
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 24
参考 [4/6]
Hartigan-Wong の方法を説明している論文
◦ Noam Slonim, Ehud Aharoni, Koby Crammer. Hartigan’s K-Means Versus Lloyd’s K-Means - Is It Time for a
Change? IJCAI 2013.
[http://ijcai.org/papers13/Papers/IJCAI13-249.pdf]
◦ Matus Telgarsky, Andrea Vattani. Hartigan’s Method: k-means Clustering without Voronoi. AISTATS 2010.
[http://jmlr.csail.mit.edu/proceedings/papers/v9/telgarsky10a/telgarsky10a.pdf]
k-means++
◦ David Arthur and Sergei Vassilvitskii. 2007. k-means++: the advantages of careful seeding. In Proceedings
of the eighteenth annual ACM-SIAM symposium on Discrete algorithms (SODA ‘07). Society for Industrial
and Applied Mathematics, Philadelphia, PA, USA, 1027-1035.
[http://dl.acm.org/citation.cfm?id=1283494] (有料)
[http://ilpubs.stanford.edu:8090/778/] (同じタイトルのテクニカルレポート)
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 25
参考 [5/6]
特に参考になったウェブ上の情報
◦ k-means return value in R
◦ http://stackoverflow.com/questions/8637460/k-means-return-value-in-r
◦ kmeans 関数の 'singleton' オプション
◦ http://d.hatena.ne.jp/nthrn/20081025/1224901102
◦ what’s the implementation of SciKit-Learn K-Means for empty clusters?
◦ http://stats.stackexchange.com/questions/152333/whats-the-implementation-of-scikit-
learn-k-means-for-empty-clusters
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 26
参考 [6/6]
R のソースコード
◦ http://cran.rstudio.com/src/base/R-3/R-3.2.1.tar.gz
k-means の実装
◦ R の関数
◦ R-3.2.1/src/library/stats/R/kmeans.R
◦ アルゴリズムごとに C または FORTRAN の関数が呼ばれる (26-63 行目の switch 文)
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 27
アルゴリズム ファイル 行番号・関数名
Lloyd-Forgy R-3.2.1/src/library/stats/src/kmeans.c 25~ 73 行目 kmeans_Lloyd
MacQueen R-3.2.1/src/library/stats/src/kmeans.c 75~146 行目 kmeans_MacQueen
Hartigan-Wong R-3.2.1/src/library/stats/src/kmns.f (全体)

Más contenido relacionado

La actualidad más candente

[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-Deep Learning JP
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有Naoaki Okazaki
 
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...Deep Learning JP
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みyuichi takeda
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門Momoko Hayamizu
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)Takayuki Itoh
 
文字認識はCNNで終わるのか?
文字認識はCNNで終わるのか?文字認識はCNNで終わるのか?
文字認識はCNNで終わるのか?Seiichi Uchida
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争Yosuke Shinya
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -諒介 荒木
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative ModelingDeep Learning JP
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健Preferred Networks
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)Takao Yamanaka
 
FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)Haruka Ozaki
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep LearningSeiya Tokui
 
研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術Shinnosuke Takamichi
 

La actualidad más candente (20)

明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有
 
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組み
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
 
文字認識はCNNで終わるのか?
文字認識はCNNで終わるのか?文字認識はCNNで終わるのか?
文字認識はCNNで終わるのか?
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
 
研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術
 

Destacado

K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介Takeshi Mikami
 
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてエクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてHiroshi Shimizu
 
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編Koichi Hamada
 
距離と分類の話
距離と分類の話距離と分類の話
距離と分類の話考司 小杉
 
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析hnisiji
 
エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方Hiroshi Shimizu
 
マハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いマハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いwada, kazumi
 
PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装Hirokatsu Kataoka
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-Koichi Hamada
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Yasutomo Kawanishi
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Hisao Soyama
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Yasutomo Kawanishi
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門toilet_lunch
 
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』The Japan DataScientist Society
 
パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0sleipnir002
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 

Destacado (17)

K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
 
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてエクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
 
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
 
日本語形態素解析
日本語形態素解析日本語形態素解析
日本語形態素解析
 
距離と分類の話
距離と分類の話距離と分類の話
距離と分類の話
 
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
 
エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方
 
マハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いマハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違い
 
PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門
 
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
 
パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 

Similar a 各言語の k-means 比較

ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介Takahiro Katagiri
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)Wataru Shito
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRShuyo Nakatani
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門mangantempy
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EETaiichilow Nagase
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...Toru Tamaki
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能MITSUNARI Shigeo
 
20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみよう20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみようMidori Oge
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)智啓 出川
 
第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)Wataru Shito
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LTKohei KaiGai
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12thSatoshi Kume
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめgion_XY
 

Similar a 各言語の k-means 比較 (20)

ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
 
R -> Python
R -> PythonR -> Python
R -> Python
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
 
20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみよう20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみよう
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
 
第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12th
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめ
 

Más de y-uti

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法y-uti
 
Active Object
Active ObjectActive Object
Active Objecty-uti
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化y-uti
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門y-uti
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...y-uti
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードy-uti
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識y-uti
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今y-uti
 
スパース推定
スパース推定スパース推定
スパース推定y-uti
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話y-uti
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告y-uti
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用y-uti
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみたy-uti
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試したy-uti
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件y-uti
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告y-uti
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecationy-uti
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたWindows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたy-uti
 

Más de y-uti (20)

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
Active Object
Active ObjectActive Object
Active Object
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
 
スパース推定
スパース推定スパース推定
スパース推定
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたWindows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみた
 

Último

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

各言語の k-means 比較

  • 2. 自己紹介 名前 ◦ 内山 雄司 職業 ◦ エンジニア (プログラマ) 私的なアカウント ◦ Twitter @y__uti ◦ はてなブログ http://y-uti.hatenablog.jp 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 2
  • 3. 今日の発表内容 各言語の k-means を比較調査してみました ◦ MATLAB ◦ R ◦ Python いろいろと違いがありました 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 3
  • 4. 調査対象 MATLAB ◦ Statistics Toolbox の kmeans 関数 R ◦ stats パッケージの kmeans 関数 Python ◦ scikit-learn の KMeans クラス ◦ SciPy の kmeans 関数 ◦ SciPy の kmeans2 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 4
  • 5. MATLAB の k-means Statistics Toolbox (要購入) の kmeans 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 5 >> load fisheriris; >> [idx, C, sumd] = kmeans(meas, 3); >> idx' ans = 1 列から 18 列 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 19 列から 36 列 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 37 列から 54 列 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 (省略) 127 列から 144 列 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 145 列から 150 列 1 1 2 1 1 2 >> sum(sumd) ans = 78.8514
  • 6. R の k-means stats パッケージ (標準) の kmeans 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 6 > km <- kmeans(iris[,1:4], 3) > km$cluster [1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 [37] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 [73] 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 2 1 [109] 1 1 1 1 1 2 2 1 1 1 1 2 1 2 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 [145] 1 1 2 1 1 2 > km$tot.withinss [1] 78.85144
  • 7. Python の k-means [1/3] scikit-learn の sklearn.cluster.KMeans クラス 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 7 >>> from sklearn import * >>> iris = datasets.load_iris() >>> kmeans = cluster.KMeans(n_clusters=3) >>> kmeans.fit(iris.data) >>> kmeans.labels_ array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2], dtype=int32) >>> km.inertia_ 78.940841426146164
  • 8. Python の k-means [2/3] SciPy の scipy.cluster.vq.kmeans 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 8 >>> from scipy.cluster.vq import * >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> [codebook, distortion] = kmeans(iris.data, 3) >>> codebook array([[ 5.006 , 3.418 , 1.464 , 0.244 ], [ 5.9016129 , 2.7483871 , 4.39354839, 1.43387097], [ 6.85 , 3.07368421, 5.74210526, 2.07105263]]) >>> distortion 0.64883949489533388 ◦ クラスタの番号を戻さない
  • 9. Python の k-means [3/3] SciPy の scipy.cluster.vq.kmeans2 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 9 >>> from scipy.cluster.vq import * >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> [centroid, label] = kmeans2(iris.data, 3) >>> centroid array([[ 5.885 , 2.74 , 4.37666667, 1.41833333], [ 5.006 , 3.418 , 1.464 , 0.244 ], [ 6.8275 , 3.07 , 5.7 , 2.0625 ]]) >>> label array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0])
  • 10. 比較結果 基本的な引数 戻り値 オプション ◦ 終了条件・実行回数 ◦ セントロイドの初期配置 ◦ 反復アルゴリズム ◦ 距離関数 ◦ 空クラスタ発生時の挙動 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 10
  • 11. 基本的な引数 MATLAB R sklearn SciPy-1 SciPy-2 データ ● ● ● ● ● クラスタ数 ● ● ○ (8) ● ● 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 11 ◦ 記号の意味 (この後のスライドで使う記号を含む) ◦ ● 必須 ◦ ◎ 既定の項目 ◦ ○ 任意 (かっこ内の値は既定値) ◦ - 該当する設定項目なし
  • 12. 戻り値 [1/2] MATLAB R sklearn SciPy-1 SciPy-2 クラスタラベル ○ ○ ○ - ○ セントロイド ○ ○ ○ ○ ○ 距離行列 ○ - - - - クラスタ内の合計距離 ○ ○ - - - の全クラスタ総和 - ○ ○ △ (注) - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 12 ◦ 距離行列について ◦ SciPy-1 各点からセントロイドへのユークリッド距離の平均を返す ◦ その他 二乗ユークリッド距離を用いる (平方根をとらない)
  • 13. 戻り値 [2/2] (R のみ) R others 各データから全データの重心への距離の総和 (totss) ○ - セントロイドから全データの重心への距離の 重み付け総和 (betweenss) ○ - 各クラスタのデータ数 (size) ○ - 実行された反復回数 (iter) ○ - エラーコード (ifault) ○ - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 13
  • 14. 終了条件・実行回数 MATLAB R sklearn SciPy-1 SciPy-2 最大反復回数 ○ (100) ○ (10) ○ (300) - ○ (10) 閾値 - - ○ (1e-4) ○ (1e-5) - k-means 実行回数 ○ (1) ○ (1) ○ (10) ○ (20) - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 14 ◦ 閾値 ◦ sklearn セントロイドの移動距離の二乗和が閾値未満になれば終了 ◦ SciPy-1 セントロイドからの距離の平均減少幅が閾値未満になれば終了
  • 15. セントロイドの初期配置 MATLAB R sklearn SciPy-1 SciPy-2 k-means++ ◎ - ◎ - - データ点からランダム ○ ◎ ○ ◎ ○ データ範囲から生成 ○ - - - ◎ 予備クラスタリング ○ - - - - ユーザ指定 ○ ○ ○ ○ ○ 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 15 ◦ データ範囲から生成 ◦ MATLAB データが存在する範囲の一様分布から ◦ SciPy-2 データの平均と共分散をパラメータとする正規分布から ◦ 予備クラスタリング ◦ データの 10% 標本で k-means を実行して決定 (その初期配置はデータ点からランダム)
  • 16. k-means++ セントロイドの初期配置の方法 ◦ データ点から k 個を選択する ◦ ただし「ランダムに k 個」選ぶのではない 選び方 ◦ 最初の一つ ◦ データ点の中から等確率で選ぶ ◦ 二番目以降 ◦ 「最も近いセントロイドとの距離の二乗」に応じた確率で選ぶ このように選ぶと ◦ クラスタ内距離の総和 𝜙 = 𝑥∈𝑋 min 𝑐∈𝐶 𝑥 − 𝑐 2 について ◦ 期待値が E 𝜙 ≤ 8 log 𝑘 + 2 𝜙opt で押さえられる …らしい 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 16
  • 17. 反復アルゴリズム MATLAB R sklearn SciPy-1 SciPy-2 Lloyd (Forgy) ◎ ○ ◎ ◎ ◎ MacQueen - ○ - - - Hartigan-Wong - ◎ - - - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 17 各アルゴリズムの特徴 (一部の論文 + R の実装より) ◦ Lloyd (Forgy) ◦ 各データをクラスタに割り当て。全データの割り当て後にセントロイドを更新 ◦ MacQueen ◦ 一つのデータをクラスタに割り当てるたびにセントロイドを更新 ◦ Hartigan-Wong ◦ 次のスライドで説明
  • 18. Hartigan-Wong の方法 以下の反復をクラスタ割り当てが変化しなくなるまで繰り返す For each 𝑥𝑖 ∈ 𝑋 ◦ 点 𝑥𝑖 を現在のクラスタから外す ◦ クラスタが 𝑥𝑖 ただ一点を含む場合は 𝑥𝑖 の処理をスキップする ◦ 次式を最小にするクラスタ 𝐶 𝑘 に 𝑥𝑖 を割り当てる Δ 𝑥𝑖, 𝐶 𝑘 = 𝑥 ∈ 𝐶 𝑘 𝑥 ∈ 𝐶 𝑘 + 1 ∙ 𝑥𝑖 − 𝑐 𝑘 2 このように計算すると ◦ Hartigan-Wong の局所解は Lloyd の局所解の真部分集合 …らしい 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 18
  • 19. 距離関数 (MATLAB のみ) MATLAB others 二乗ユークリッド距離 ◎ - マンハッタン距離 ○ - 1 - コサイン類似度 ○ - 1 - 標本相関 ○ - ハミング距離 ÷ 次元数 ○ - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 19
  • 20. 空クラスタ発生時の挙動 MATLAB R sklearn SciPy-1 SciPy-2 エラーとして停止 ○ ◎ - ◎ ○ 初期値を変えて再実行 - - - - ◎ クラスタ数を減らす ○ ◎ - - - 他のクラスタから奪う ◎ - ◎ - - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 20 ◦ R の実装 ◦ Hartigan-Wong エラーとして停止 ◦ その他 クラスタ数を減らす ◦ 他のクラスタから奪う ◦ 全データの中でセントロイドからの距離が最大のものを見つける ◦ その点のみを含むクラスタを新たに生成する
  • 21. その他 細かなオプションはいろいろ・・・ ◦ オンライン更新 (MATLAB) ◦ 並列計算に関するオプション (MATLAB, scikit-learn) ◦ 計算中の詳細情報の表示 (各言語) 細かいので省略 終わり 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 21
  • 22. 参考 [1/6] MATLAB ドキュメンテーション - Statistics Toolbox ◦ k 平均クラスタリング ◦ http://jp.mathworks.com/help/stats/kmeans.html ◦ 標本データセット ◦ http://jp.mathworks.com/help/stats/_bq9uxn4.html The R Reference Index (PDF) ◦ http://cran.r-project.org/doc/manuals/r-release/fullrefman.pdf ◦ 0624 ページ "Edgar Anderson's Iris Data" ◦ 1362 ページ "K-Means Clustering" ◦ いずれも Version 3.2.1 (2015-06-18) での情報 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 22
  • 23. 参考 [2/6] scikit-learn ◦ KMeans ◦ http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html ◦ The Iris Dataset ◦ http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html SciPy ◦ kmeans ◦ http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans.html ◦ kmeans2 ◦ http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans2.html 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 23
  • 24. 参考 [3/6] Lloyd ◦ Lloyd, S. Least squares quantization in PCM. IEEE Transactions on Information Theory 28(2), 129–137, Mar 1982. [https://dx.doi.org/10.1109/TIT.1982.1056489] (有料) Forgy ◦ E.W. Forgy. Cluster analysis of multivariate data: efficiency versus interpretability of classifications. Biometrics 21: 768–769. 1965. (URL 不明) MacQueen ◦ MacQueen, J. Some methods for classification and analysis of multivariate observations. Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability, Volume 1: Statistics, 281–297, University of California Press, Berkeley, Calif., 1967. [http://projecteuclid.org/download/pdf_1/euclid.bsmsp/1200512992] Hartigan-Wong ◦ J. A. Hartigan and M. A. Wong. Algorithm AS 136: A K-Means Clustering Algorithm. Journal of the Royal Statistical Society. Series C (Applied Statistics), Vol. 28, No. 1 (1979), pp. 100-108. [http://www.jstor.org/stable/2346830] (有料) 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 24
  • 25. 参考 [4/6] Hartigan-Wong の方法を説明している論文 ◦ Noam Slonim, Ehud Aharoni, Koby Crammer. Hartigan’s K-Means Versus Lloyd’s K-Means - Is It Time for a Change? IJCAI 2013. [http://ijcai.org/papers13/Papers/IJCAI13-249.pdf] ◦ Matus Telgarsky, Andrea Vattani. Hartigan’s Method: k-means Clustering without Voronoi. AISTATS 2010. [http://jmlr.csail.mit.edu/proceedings/papers/v9/telgarsky10a/telgarsky10a.pdf] k-means++ ◦ David Arthur and Sergei Vassilvitskii. 2007. k-means++: the advantages of careful seeding. In Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms (SODA ‘07). Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, 1027-1035. [http://dl.acm.org/citation.cfm?id=1283494] (有料) [http://ilpubs.stanford.edu:8090/778/] (同じタイトルのテクニカルレポート) 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 25
  • 26. 参考 [5/6] 特に参考になったウェブ上の情報 ◦ k-means return value in R ◦ http://stackoverflow.com/questions/8637460/k-means-return-value-in-r ◦ kmeans 関数の 'singleton' オプション ◦ http://d.hatena.ne.jp/nthrn/20081025/1224901102 ◦ what’s the implementation of SciKit-Learn K-Means for empty clusters? ◦ http://stats.stackexchange.com/questions/152333/whats-the-implementation-of-scikit- learn-k-means-for-empty-clusters 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 26
  • 27. 参考 [6/6] R のソースコード ◦ http://cran.rstudio.com/src/base/R-3/R-3.2.1.tar.gz k-means の実装 ◦ R の関数 ◦ R-3.2.1/src/library/stats/R/kmeans.R ◦ アルゴリズムごとに C または FORTRAN の関数が呼ばれる (26-63 行目の switch 文) 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 27 アルゴリズム ファイル 行番号・関数名 Lloyd-Forgy R-3.2.1/src/library/stats/src/kmeans.c 25~ 73 行目 kmeans_Lloyd MacQueen R-3.2.1/src/library/stats/src/kmeans.c 75~146 行目 kmeans_MacQueen Hartigan-Wong R-3.2.1/src/library/stats/src/kmns.f (全体)