juliaでクラスター分析(K-means)をやってみる

julia

Juliaでクラスタ分析をやってみようっていう話です。

今回はK-means(K平均法)やってみます。教師なし学習っていうやつですね。

さて、Juliaでクラスター分析するときに使えるパッケージがあります。その名も「Clustering.jl」そのまんまの名前です。

チュートリアルにあるIrisのK-meansやっていきましょう。

パッケージのインストール

まずはパッケージのインストールから

REPL環境であればパッケージモードから、

(@v1.7) pkg>add Clustering

jupyter-notebookなどからインストールするなら

using Pkg
Pkg.add("Clustering")

K-meansやっていこう!

パッケージの準備ができたので、実際にK-means(K平均法)やっていきましょう

データセットをRDatasetsから持ってくる方法とMLDatasetsから持ってくる方法、両方を紹介します。

データの準備-RDatasetsを使う場合-

まずはRDatasetsからやっていきましょう

using RDatasets
iris = dataset("datasets","iris");
features = collect(Matrix(iris[:,1:4])');

Irisのデータセットを持ってきて、それを整形します。

Matrix(iris[:,1:4])'

最後につけてるシングルクオーテーションは、転置行列を求めてます。K-meansで使う形に変えているってことですね。

これしないと、求めるものが出てきません。

データの準備-MLDatasetsを使う場合-

次にMLDatasets

using MLDatasets
features = Iris.features();

MLDatasetsの場合は、整形されてるので、DLしてくるだけでOK.

クラスタリングとプロット

データが準備できたので、K-meansでクラスタリングしてきましょう。

result = kmeans(features,3);

これでクラスタリングが完了します。

では、プロットしていきましょう

RDatasetsの場合

using Plots
scatter(iris.PetalLength,iris.PetalWidth,markercolor=result.assignments,color=:lightrainbow,legend=false)

MLDatasetsの場合

scatter(iris[3,:],iris[4,:],markercolor=result.assignments,color=:lightrainbow,legend=false)

RDatasetsの場合だと、データがDataFrameで作ってあって、MLDatasetsだと行列で作ってあります。

RDatasetsであれば、ラベルで指定できるけど、MLDatasetsの場合は、行列の形式で指定する。

プロットするとこんな感じで、きれいにクラスタリングできますね。

まとめ

今回はJuliaのパッケージ”Clustering.jl”を使ってクラスター分析(K-means)をやってみました。

データセットの用意の方法も2通りご紹介しました。

RDatasetsはRのデータセットを使えるようにするパッケージで、1000を超えるデータセットがあるので、気になる人はチェックしてみてもいいと思います。

ではまた

コメント

タイトルとURLをコピーしました