2

knn を使用してランダム データを推定していますが、ベクトルから異なる k を選択しています。各 knn は長さ 200 のベクトルを返し、13 個の k があるため、for ループの前に初期化された 13x200 ベクトルが必要です。私は何かをしたい

knn_train <- rep(0,1000)

しかし、多次元ベクトルの場合。

これが私のコードです:

library(class)
library(MASS)
#List of k's for use in knn
k <- c(1,4,7,10,13,16,30,45,60,80,100,150,200)
#Generate identity matrix for sigmas 
sigma <- diag(2)
# Class 1
mu_green <- c(-.5,.5)
green_train <- mvrnorm(100, mu_green,sigma)
green_test <-  mvrnorm(100, mu_green,sigma)
#Class 0
mu_red <-c(-.2,.6)
red_train<- mvrnorm(100, mu_red,sigma)
red_test<- mvrnorm(100, mu_red,sigma)
#Bind test and train data
train <- rbind(green_train,red_train)
test <- rbind(green_test,red_test)
cl <- rbind(c(rep(1,100),rep(0,100)))


for(i in 1:length(k))
{
  #Train into train then train into test
  knn_train[i] = knn(train,train,cl,k[i],prob=TRUE)
  knn_test[i] = knn(train,test,cl,k[i],prob=TRUE)
  #First 100 are class 1, second 100 are class 2
  train_err[i]<- 100-sum(table(knn_train[i][1:100]))+sum(table(knn[i][100:200]))
  test_err[i]<- 100-sum(table(knn_test[i][1:100]))+sum(table(knn[i][100:200]))
}
4

1 に答える 1

1

「多次元ベクトル」を初期化する通常の方法は、行列オブジェクトを作成することです。

 knn_train <- matrix(NA, nrow=1000, ncol=13)

値を入力する場合は、次のようにします。

 knn_train[ , i] <- # 13 element vector
于 2013-02-19T17:25:38.243 に答える