データハンドリング 前処理 可視化

クラスタリングの実践(好きなアイスクリームアンケート)

投稿日:

概要

・目的:このデータを使ってアイスクリームの好みの違いをクラスタリングで分類し、好みのパターンを理解する

データの読み込み

中学生104人の運動能力テスト6種と体力測定5種の計測のデータ。このデータを使って中学生の身体能力についてクラスタリングを行ってみる。男性40名、女性40名に、21種類のアイスクリームの好みに応じて点数(嫌い1〜好き9)をつけてもらったアンケート結果。

  • ID
  • gender 性別
  • age 年齢
  • birth_order 兄弟姉妹の中で上から何番目か
  • frequency 来店頻度
  • vanilla バニラ
  • strawberry ストロベリー
  • milk_tea ミルクティー
  • macadamia_nuts マカダミアナッツ
  • cookie クッキー
  • chocolate チョコ
  • melon メロン
  • coffee コーヒー
  • almond アーモンド
  • rum_raisin ラムレーズン
  • mint ミント
  • banana バナナ
  • caramel キャラメル
  • walnut クルミ
  • cassis カシス
  • chocolate_chips チョコチップ
  • orange オレンジ
  • green_tea 抹茶
  • marron マロン
  • chocolate_mint チョコミント
  • adzuki-bean あずき

データの詳細はこちら
https://raw.githubusercontent.com/maskot1977/ipython_notebook/master/toydata/icecream_chosa.txt

genderagebirth_orderfrequencyvanillastrawberrymilk_teamacadamia_nutscookiechocolatemeloncoffeealmondrum_raisinmintbananacaramelwalnutcassischocolate_chipsorangegreen_teamarronchocolate_mintadzuki-bean
ID
122025778399683217933978817
222121789999277954789947789
322132743364776334633673733
422143966586896544954891213
522142957568444696665966691

データの確認


まずは、データ型や欠損値を確認。データ型はすべて数値、欠損値はない。

次に、データのサマリを確認。平均年齢は20歳と若い世代が中心となっている。
味の人気では、chocolate_chips、vanilla、cookieが人気、逆にmint、melonが不人気。 vanillaについては、約半数が7,8点をつけて安定した人気となっている。 また、chocokate_mint、rum_raisinなど癖の強い味は好き嫌いが別れている。

genderagebirth_orderfrequencyvanillastrawberrymilk_teamacadamia_nutscookiechocolatemeloncoffeealmondrum_raisinmintbananacaramelwalnutcassischocolate_chipsorangegreen_teamarronchocolate_mintadzuki-bean
count80.00000080.00000080.0000080.00000080.00000080.00000080.00000080.00000080.0000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.00000080.0000080.00000080.00000
mean1.50000020.6375002.525003.7375007.2375006.5250006.2000005.9125007.162507.0625004.9125005.9875005.4500005.6250004.9000005.3000006.3625005.4250005.5375007.6375006.4750006.6500005.537505.4750005.75000
std0.5031551.5364251.043061.5890751.3429961.6609821.8238921.8568641.529821.9831171.9499681.9776841.7129442.3727092.3578581.8029512.0141512.0112031.7498191.6781831.7858442.2281292.049662.7603662.41042
min1.00000018.0000001.000001.0000004.0000001.0000001.0000002.0000003.000001.0000001.0000001.0000002.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000001.0000001.00000
25%1.00000020.0000002.000002.0000007.0000006.0000005.0000005.0000006.000006.0000004.0000005.0000004.0000004.0000003.0000004.0000005.0000004.0000005.0000007.0000005.7500006.0000004.750003.0000004.00000
50%1.50000021.0000002.000004.0000007.0000007.0000006.0000006.0000007.000007.0000005.0000006.0000005.0000005.5000005.0000005.0000007.0000005.0000005.0000008.0000007.0000007.0000005.000006.0000006.00000
75%2.00000021.0000004.000005.0000008.0000008.0000007.0000007.0000008.000009.0000006.0000007.0000006.2500008.0000006.2500006.0000008.0000007.0000007.0000009.0000008.0000008.0000007.000008.0000008.00000
max2.00000029.0000004.000008.0000009.0000009.0000009.0000009.0000009.000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.0000009.000009.0000009.00000

次に、データのサマリを確認。平均年齢は20歳と若い世代が中心となっている。
味の人気では、chocolate_chips、vanilla、cookieが人気、逆にmint、melonが不人気。
また、chocokate_mint、rum_raisinなど癖の強い味は好き嫌いが別れている。

男女で好みの差を比較。 顕著な差が出たのは、キャラメル、アーモンド、コーヒー、クッキー、チョコレートで、女性の方が好んでいる。 また、全体的に女性の方が各味を高く評価している。

主成分分析

主成分分析を行い、より情報を圧縮した状態でデータの全体を確認し、全体の傾向を眺める。 また、純粋に味の好みだけでクラスタリングするため年齢、性別、兄弟構成は除外する。

主成分分析結果の確認。まずは寄与率を確認。第1主成分で約20%、第2主成分で30%程度の情報を持っている。 後工程で第1主成分 x 第2主成分を散布図で可視化するが30%程度歯科情報がないことに留意する。

因子負荷量と主成分得点をバイプロットで可視化してみる。赤の棒線は因子負荷量、青のドットは回答者を表している。

因子負荷量の方向から、下方向はミント系、左下方向ナッツ系、他は混在していて読み取るのが難しい。

クラスタリング

k-meansを使ってク中学生の身体能力をクラスタリングし、その特徴を理解する。

k-meansの場合、クラスタ数を自ら決める必要がある。今回はエルボー法を使って、クラスタ数を決定する。

エルボー法
ステップ1:クラスタ数を1,2,3,,と変えていき、各SSE値をプロット
ステップ2:クラスタ数の増加にともない下がっていくSSE値の減少率が低下した点を最適クラスターとする

このデータからでは、明確な最適値の判断は難しい。 強いて言うなら、クラスタ5で落ち率が低下しているように見えるため、クラスタ数は4とする

クラスタ数を5としてK-meansを実施し、結果を主成分分析の散布図にプロット。 無理やり分割しているように見えるが、重心の位置は分割できている。

cluster01234
vanilla-0.611765-0.0976770.3215750.3715291.320644
strawberry0.255893-0.166609-0.6008030.772461-0.923924
milk_tea0.296196-0.8394290.5885200.625302-0.110347
macadamia_nuts0.903115-0.649361-0.2416150.2280670.408713
cookie0.550904-0.412297-0.3261570.550904-0.764688
chocolate0.3956010.022653-0.3023490.306577-2.738052
melon-0.1449730.026725-0.1956740.630029-1.503038
coffee0.274167-0.4842990.5491150.175971-0.841693
almond1.250700-0.348288-0.381858-0.342693-1.047661
rum_raisin0.337620-0.2499270.441790-0.4629960.300417
mint0.491931-0.1859580.810900-0.810900-1.379953
banana0.096941-0.5262520.3534920.800009-1.469783
caramel0.449986-0.5022960.2518920.551663-2.179590
walnut1.077732-0.587914-0.3460770.187632-0.546218
cassis0.477857-0.4939640.2659810.342660-1.459299
chocolate_chips0.406731-0.125282-0.1424150.377275-2.580960
orange-0.0007410.0342120.0328700.258267-1.770304
green_tea0.419549-0.5839040.1279640.2785110.760259
marron0.330432-0.7723910.1288780.979882-0.427548
chocolate_mint0.555949-0.1861840.580252-0.610632-1.631390
adzuki-bean0.477908-0.506943-0.3687770.828008-0.591434

クラスタリングの結果を集計し可視化。

ちょっと無理矢理感があるけど、以下のように読み取れそう。

  • クラスタ0:ナッツ好き(運動全般が苦手)
  • クラスタ1:アイス嫌い(アイス全般に低い評価)
  • クラスタ2:クセモノ好き(ミントやラムレーズンなど好き嫌いが分かれるものが好き)
  • クラスタ3:マイルド系(小豆、栗、バナナなどマイルドな食材が好き)
  • クラスタ4:通タイプ(好き嫌いがはっきりしている)
cluster01234
gender1.6315791.3928571.6000001.5333331.000000
age20.47368420.46428620.60000021.46666719.333333
birth_order2.6315792.5000002.8666672.2666671.666667
frequency3.8421053.4285714.1333333.9333333.000000
vanilla6.4210537.1071437.6666677.7333339.000000
strawberry6.9473686.2500005.5333337.8000005.000000
milk_tea6.7368424.6785717.2666677.3333336.000000
macadamia_nuts7.5789474.7142865.4666676.3333336.666667
cookie8.0000006.5357146.6666678.0000006.000000
chocolate7.8421057.1071436.4666677.6666671.666667
melon4.6315794.9642864.5333336.1333332.000000
coffee6.5263165.0357147.0666676.3333334.333333
almond7.5789474.8571434.8000004.8666673.666667
rum_raisin6.4210535.0357146.6666674.5333336.333333
mint6.0526324.4642866.8000003.0000001.666667
banana5.4736844.3571435.9333336.7333332.666667
caramel7.2631585.3571436.8666677.4666672.000000
walnut7.5789474.2500004.7333335.8000004.333333
cassis6.3684214.6785716.0000006.1333333.000000
chocolate_chips8.3157897.4285717.4000008.2666673.333333
orange6.4736846.5357146.5333336.9333333.333333
green_tea7.5789475.3571436.9333337.2666678.333333
marron6.2105263.9642865.8000007.5333334.666667
chocolate_mint7.0000004.9642867.0666673.8000001.000000
adzuki-bean6.8947374.5357144.8666677.7333334.333333

-データハンドリング, 前処理, 可視化

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

毒キノコの判定 〜SVM〜

Contents1 SVMとは2 標準化3 カーネルとは4 コストペナルティCとは5 ハイパーパラメータの調整6 学習およびテスト SVMとは クラス間のマージンを最大化するように境界線を引く手法。ク …

no image

python/基礎/メソッド,関数,インスタンス

pythonでは値に対する処理方法として、メソッド、関数、インスタンスの3つがある。 メソッドと関数はと関数は機能としては同じだが、記述法が異なる。 関数:関数(処理対象)例)max([1,2,3]) …

no image

python/sklearn/単回帰(LinearRegression)

2次元のデータに対して単回帰分析を行う。 Contents0.1 データ取得0.2 メソッド0.3 可視化0.4 学習データとテストデータに分割0.5 単回帰分析0.6 結果のプロット1 決定係数の算 …

no image

教師なし学習 クラスタリング

  辛さ 重厚 スパイシー 果実味 コク 酸味 落ち着き 香り 華や …

no image

KFold + XGBoost + EDAチュートリアル | PortoSeguro コンペ

Contents1 概要説明2 コンペの説明3 目次4 コンペの説明5 イントロ6 データ準備6.1 データロード6.2 欠損値の確認6.3 中央値で欠損値補完7 特徴量とターゲットの分割8 データの …