【问题标题】:'train' and 'class' have different lengths'train' 和 'class' 有不同的长度
【发布时间】:2017-12-10 16:55:58
【问题描述】:

我是 R 新手,并且有一个非常简单的数据集,但我似乎无法弄清楚为什么我得到“训练”和“类”的长度不同。请指教

enter image description here

library(class)
file_4 <- file_4[,-1]
data_norm <- function(x) { ((x - min(x))/ (max(x)- min(x)))}
file_4_norm <- as.data.frame(lapply(file_4[,-4], data_norm))
summary(file_4[,1:3])
summary(file_4_norm[,1:3])

data_tr <- file_4_norm[1:4,]
data_ts <- file_4_norm[5:6,]

dim(data_tr)
dim(data_ts)
dim( file_4[1:4,4])

data_pred <- knn(data_tr, data_ts,  file_4[1:4,4], k=1)

【问题讨论】:

    标签: r knn predict


    【解决方案1】:

    我只是简单地构建了您的代码。希望这会有所帮助!

    #sample data
    df <- data.frame(X1=c(0,0,0,0,-1,1),
                     X2=c(3,0,1,1,0,1),
                     X3=c(0,0,3,2,1,1),
                     Y=c('Red','Red','Red','Green','Green','Red'))
    
    #standardize attributes
    color <- df[,ncol(df)]    # save 'Y' a in separate variable as we don't want to standardize it
    df_minus_Y <- df[,-ncol(df)] 
    maxs <- apply(df_minus_Y, 2, max)   #maximum of each column 
    mins <- apply(df_minus_Y, 2, min)   #minimum of each column
    standardized.df_minus_Y <- as.data.frame(scale(df_minus_Y, scale = maxs - mins, center = mins))
    
    #split data in train/ test (in reality it should be done at random but here I just tried to imitate your example)
    train_idx = 1:4
    #train dataset
    train_data <- standardized.df_minus_Y[train_idx,]
    train_color <- color[train_idx]
    #test dataset
    test_data <- standardized.df_minus_Y[-train_idx,]
    test_color <- color[-train_idx]
    
    #knn model
    library(class)
    set.seed(123)
    predicted_color <- knn(train_data,test_data,train_color,k=1)
    
    #accuracy
    mean(test_color == predicted_color)
    

    【讨论】:

    • @lmundia 也许你应该 accept the answer 如果它解决了你的问题,那么这个问题就可以被认为是关闭的。
    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多