MachineLearning: 機械学習の始め方3/3 ver. 3

Last Updated on August 5, 2021 by shibatau

機械学習の始め方1/3

機械学習の始め方2/3

機械学習の始め方3/3

I.KNNによる機械学習

 

前回に引き続き次の解説を学びます。

 

Machine Learning in R for beginners

 

II.KNN

 

用いるモデルは散布図上の「距離の近さ」で分類するKNNです。

トレーニングで得た判定ルールを残りの1/3のデータに適応して、適切に判定されているかを確認し、正しく判定している割合を算出します。

間違いが多いなら、さらに多くのデータでトレーニングしたり、散布図上の近隣3個の花の種類で判定していたのを近隣5個に増やすことが考えられます。

それでもだ誤りが多いようなら、KNN以外のモデルを選ぶことになります。

 

Machine Learning in R for beginners

 

解説のStep 6のKNNの解説をまとめると次のスクリプトになります。

一番最後に表示されるのが判定結果です。テスト・データでは1件間違えただけだということがわかります。

 

# import libraries library(ggplot2) library(lattice) library(caret) library(class) # divide data into two groups set.seed(1234) ind <- sample(2, nrow(iris), replace=TRUE, prob=c(0.67, 0.33)) # Compose training set iris.training <- iris[ind==1, 1:4] # Inspect training set head(iris.training) # Compose test set iris.test <- iris[ind==2, 1:4] # Inspect test set head(iris.test) # Compose `iris` training labels iris.trainLabels <- iris[ind==1,5] # Inspect result print(iris.trainLabels) # Compose `iris` test labels iris.testLabels <- iris[ind==2, 5] # Inspect result print(iris.testLabels) # Build the model iris_pred <- knn(train = iris.training, test = iris.test, cl = iris.trainLabels, k=3) # Inspect `iris_pred` iris_pred # Put `iris.testLabels` in a data frame irisTestLabels <- data.frame(iris.testLabels) # Merge `iris_pred` and `iris.testLabels` merge <- data.frame(iris_pred, iris.testLabels) # Specify column names for `merge` names(merge) <- c("Predicted Species", "Observed Species") # Inspect `merge` merge

 

同じ基準で新たなデータを判定します。

もとのデータを適当に0.1増減して、次のデータを作成しました。

 

Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
5.1, 3.3, 1.5, 0.3
5.5, 3.8, 1.6, 0.3
5.8, 2.9, 4.2, 1.4
6.8, 3.0, 5.3, 2.0

 

Runをクリックしてください。最後に上の4件のデータのアイリスの種別が判定されます。

 

# import libraries library(ggplot2) library(lattice) library(caret) library(class) # divide data into two groups set.seed(1234) ind <- sample(2, nrow(iris), replace=TRUE, prob=c(0.67, 0.33)) # Compose training set iris.training <- iris[ind==1, 1:4] # Inspect training set head(iris.training) # Compose test set iris.test <- iris[ind==2, 1:4] # Inspect test set head(iris.test) # Compose `iris` training labels iris.trainLabels <- iris[ind==1,5] # Inspect result print(iris.trainLabels) # Compose `iris` test labels iris.testLabels <- iris[ind==2, 5] # Inspect result print(iris.testLabels) # Build the model iris_pred <- knn(train = iris.training, test = iris.test, cl = iris.trainLabels, k=3) # Inspect `iris_pred` iris_pred # Put `iris.testLabels` in a data frame irisTestLabels <- data.frame(iris.testLabels) # Merge `iris_pred` and `iris.testLabels` merge <- data.frame(iris_pred, iris.testLabels) # Specify column names for `merge` names(merge) <- c("Predicted Species", "Observed Species") # Inspect `merge` merge # new test sample iris.test1 <- read.csv(header=T, text=' Sepal.Length,Sepal.Width,Petal.Length,Petal.Width 5.1,3.3,1.5,0.3 5.5,3.8,1.6,0.3 5.8,2.9,4.2,1.4 6.8,3.0,5.3,2.0 ') # apply knn to iris.test1 iris_pred1 <- knn(train = iris.training, test = iris.test1, cl = iris.trainLabels, k=3) # results iris_pred1

 

 

 

 

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.