簡體   English   中英

xj[i] 中的錯誤:無效的下標類型“列表”

[英]Error in xj[i] : invalid subscript type 'list'

我試圖將數據(銀行)拆分為訓練數據和測試數據。 但是我不知何故在下面出現錯誤。我該如何解決這個問題?

train = bank[1:100, ]
test = bank[!train,]
Status.test =Status[!train]
glm.fit=glm(Status~Length+Right+Bottom+Top+Diagonal,data=bank,family=binomial,subset=train)

#Error in xj[i] : invalid subscript type 'list'

glm.probs=predict(glm.fit,test,type="response") 
glm.pred=rep("genuine",100)  
glm.pred[glm.probs>.5]="counterfeit"
table(glm.pred,test)##classification on training data

#Error in table(glm.pred, test) : all arguments must have the same length

問題出在subset=train 根據?glm subset應該是一個向量,與原始數據集的子集相反:

子集一個可選的向量,指定要在擬合過程中使用的觀察子集。

因此,您可能需要將代碼更改為: glm.fit=glm(Status~Length+Right+Bottom+Top+Diagonal,data=train,family=binomial)

或者

glm.fit=glm(Status~Length+Right+Bottom+Top+Diagonal,data=bank,family=binomial,subset=1:100)

通常,您可以通過執行以下操作來實現您的要求:假設列“響應”是觀察列:

samples=1:100
train = bank[samples, ]
test = bank[-samples,]
Status.test =bank[samples,'response']

順便說一句,我建議使用sample()函數來隨機抽取樣本進行訓練和測試。 像這樣:

samples=sample(nrow(bank), 0.8*nrow(bank))
train = bank[samples, ]
test = bank[-samples,]
Status.test =bank[samples,'response']

如果您將訓練數據設置為:

data[1: 100,]

然后在lm()函數中使用參數:

data = bank[train,]

或者,您可以將火車設置為:

seq(1: 100)

作為索引序列,您需要在

lm(): data = bank, subset = train

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM