k-nearist neighbor modelを使って分類してみます。
1. データの用意
今回は y < x (クラスA), y > x (クラスB), y = x (クラスC) を満たすものを3つのクラスに分類します。エクセルでrand関数を使って100個ほどデータを用意します。最初と最後にクラスC用のデータを10個ずつ追加しておきます。
これを Matlab onlineにアップロードします。ファイル名 : k-nearist.xlsx
取り込み
knearist = readtable("k-nearist.xlsx");
カテゴリ化
knearist.class = categorical(knearist.class);
cvpartition関数を使ってtrainingデータとtestデータに分けます。c = cvpartition(n,'HoldOut',p) は、n 個の観測でのホールドアウト検定のランダム分割を作成します。観測値は学習セットとテストセットに分割されます。https://jp.mathworks.com/help/stats/cvpartition.html
cvpt = cvpartition(knearist.class,'HoldOut',0.3)
データをtrainingデータとtestデータに分けます。
idxTrain = training(cvpt);
dataTrain = knearist(idxTrain,:);
idxTest = test(cvpt);
dataTest = knearist(idxTest,:);
これでデータの準備ができました。
2. k-nearist neighbor modelの利用
最近傍点を使用した分類を行います。
https://jp.mathworks.com/help/stats/classification-using-nearest-neighbors.html
mdl = fitcknn(dataTrain,'class')
predict関数を使って、testデータから予測します。
https://jp.mathworks.com/help/stats/compactclassificationensemble.predict.html
predictedGroups = predict(mdl,dataTest)
3. Modelの評価
先ほど予測したデータを評価します。loss関数を利用します。
https://jp.mathworks.com/help/stats/compactclassificationdiscriminant.loss.html
testErr = loss(mdl,dataTest)
確認のため、trainingデータも評価しておきます。
predictedGroups = predict(mdl,dataTrain)
trainErr = resubLoss(mdl)
以上です。
0 件のコメント:
コメントを投稿