2017年9月25日月曜日

Matlab : k-means法の利用

Matlabでk-means法を実施します。
今回はMatlab Onlineで実施します。
https://jp.mathworks.com/products/matlab-online.html
からログインして環境を開きます。

(1) データの取り込み
袋井市オープンデータを利用します。
平成29年度人口・世帯数の推移  平成29年5月1日人口表
http://opendata.city.fukuroi.shizuoka.jp/dataset/p_23554_1491357120914
使うシートは自治会別世帯数及び人口です。
ダウンロードして、各自治体の合計の行を取り除き、インデックスも日本語でなくしておいきます。idの行を追加しておきます。

これを Matlab Onlineでアップロードしておきます。
メニューからアップロードを選択し、ファイルをアップロードします。
コマンドでデータを取り込みます。
data = readtable("jinkouH290430.xlsx");
この中で、日本人男性・女性の人数、外国人男性・女性の人数の4項目を使うこととします。数字は列番号です。
stats = data{:,[ 4 5 8 9 ]}; 
ラベルも持ってきます。
labels = data.Properties.VariableNames([ 4 5 8 9 ]);
データのスケールを揃えます。
statsNorm = zscore(stats);
zscoreは平均が0標準偏差が1となります。
https://jp.mathworks.com/help/stats/zscore.html
(2) k-means法の実施
grp = kmeans(statsNorm,3,'Replicates',5);
クラスタ数は3、初期値を5回くらい返し、良いものを選びます。
http://jp.mathworks.com/help/stats/kmeans.html?searchHighlight=kmeans&s_tid=doc_srchtitle
grpの内容

表示
scatter(stats(:,1),stats(:,3),5,grp);
このような順序でやっていきます。

0 件のコメント:

コメントを投稿