Python

PySpark MLlibでkmeansによるクラスタリング

PySparkのMLlibを使ったkmeansによるクラスタリングをやってみたいと思います。

過去の記事ではPySparkによる線形重回帰やロジスティック回帰など数値予測や分類予測を行いましたので、今回はクラスタリングにも挑戦してみます。

前回同様、こちらの本を参考にさせていただきました。

Applied Data Science Using PySpark

今回使うデータはお馴染みのIrisデータです。この中の"variety"列:Irisの種類の名前でクラスタリングをしていきたいと思います。

変数は、sepal_length, sepal_width, petal_length, petal_widthの4つを使います。

 

PySpark MLlibでkmeansによるクラスタリング

クラスタリング用に変数をassemble

まずはデータを読み込みます。こんなデータになっています。

 

 

クラスタリングをする対象となるvarietyの種類をカウントするとこんな感じで50レコードずつ入っているようです。

 

 

そしてクラスタリングを行うために変数をassembleをします。

今回はこのデータに入っている全てのデータを使うので、全てをひとまとめにし、featuresというカラムをつくります。

パイプラインは今回は使わずにやりますので、最後にtransformします。

 

 

kmeanクラスタリングの実行

さて、kmeansクラスタリングを実行するわけですが、kの値を決めなければいけません。

よくある手としては各kに対するシルエット係数を計算したり、エルボー法と呼ばれる手法を用いるなどがあります。

これらについては別の機会に記事を書いてみたいと思いますが、他にも分かりやすい解説があるので、そちらを参照してください。

とりあえず今回は正解がわかっているので、その正解にもとづいてkmeansのk=3の場合をやってみたいと思います(Irisは3種類ということがわかっているため)。

 

 


 

さて、これでクラスタリングができたのでその結果も確認しておきます。

とりあえず、各クラスターの数だけ。

 

 


 

一応k=3でシルエット係数の計算もしてみます。

本来はk=1~10とかまで計算してみて、その変化を確認するのがよいと思います。

 

 


 

と、こんな感じでPySparkでもkmeanによるクラスタリングをとりあえず行うことができました。

Irisのデータを使っているのでクラスタ数もわかっていますし、データ量も少ないのでこの例ではPySparkを使うこともありませんが、使うべき場面で使えるようになっておくと良いですね。

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2022 All Rights Reserved Powered by AFFINGER5.