これが他の場所にある場合はお詫びします (また、私の質問が不十分である場合は、これが私の最初の投稿です)。何日も検索して他のすべてのエラーを解決しましたが、「1:knots.vec[num.ctr] のエラー: NA/NaN 引数」というエラーが表示され続けます。11 個が因子で 2 個が数値である 13 個の変数から 4 グループのカテゴリ クラス (Q72to73_OpportunitySegments) を予測しようとしています。データを as.data.frame から R に読み取りました (事前にすべての NA 行を削除しました)。私のコードは Carseats データの例で機能し、2 つの数値変数 (fldAge と fldSrvcYrs) を標準化しない場合にも機能します。
Carseats データで動作するコードは次のとおりです。
library(dplyr)
library(ISLR)
library(knncat)
fix(Carseats) ## 11 vars: 8 continuous, 3 categorical
## move ShelveLoc factor to front of data
Carseats <- Carseats[,c(7,1:6,8:ncol(Carseats))]
## standardize qual vars and drop original qual vars
Carseats_quantvars <- as.data.frame(scale(Carseats[,2:9]))
Carseats_stdzd <- cbind(Carseats[,-(2:9)], Carseats_quantvars); rm(Carseats_quantvars)
set.seed(1)
train = sample(c(TRUE,FALSE), nrow(Carseats_stdzd), rep=TRUE)
knn.pred <- knncat(Carseats_stdzd[train,], Carseats_stdzd[!train,])
knn.pred ## gives "Test set misclass rate: 48.09%"
knn.pred$vars ## gives 2 vars used in knncat: Sales, Price
私は自分のデータで正確に上記を実行し、これを取得しました:
library(readr)
library(dplyr)
library(knncat)
my_data1 <- read_csv("my_data1.csv", progress=interactive()) ## main datafile
(これを示すのに役立ちますか?)
Parsed with column specification:
cols(
Q72to73_OpportunitySegments = col_character(),
fldSrvcYrs = col_double(),
ENG_STATE = col_character(),
fldAge = col_integer(),
fldGender = col_character(),
jobclas_13G = col_character(),
UNIONSTATUS = col_character(),
APPTSTATUS = col_character(),
EDUGRP_4G = col_character(),
DIRECTREPORTS = col_character(),
JOBSHELD_4G = col_character(),
JOBSAPPLY_4G = col_character(),
NEWJOB = col_character(),
Region_4g = col_character()
)
my_data1 <- my_data1 %>% mutate_if(is.character, factor)
my_data1$fldAge <- as.numeric(my_data1$fldAge) ## b/c came in as integer
my_data1 <- my_data1[,c(1,2,4,3,5:ncol(my_data1))]
my_data1_quantvars <- as.data.frame(scale(my_data1[,2:3]))
my_data1_quantvars <- rename(my_data1_quantvars, stdzd_SrvcYrs=fldSrvcYrs, stdzd_Age=fldAge)
my_data1_stdzd <- cbind(my_data1[,-(2:3)], my_data1_quantvars); rm(my_data1_quantvars)
set.seed(1)
train = sample(c(TRUE,FALSE), nrow(my_data1), rep=TRUE)
knn.pred <- knncat(my_data1_stdzd[train,], my_data1_stdzd[!train,])
1 のエラー:knots.vec[num.ctr]: NA/NaN 引数
このエラーは、標準化された変数の 1 つまたは両方と関係があります (標準化されていないまったく同じデータに対して同じコードを実行すると、実行されknncat
ます)。これを解決する方法はありますか?(残念ながら、統計法の関係上、実データを公開することはできません。)