我需要分析消极或正面的短信,并找出哪些词定义了正面或负面的文字。此时,我需要在测试集和训练集之间分割数据。但是,这种情况发生了:
library(caTools)
split = sample.split(smsSparse$sentiment, SplitRatio = .7)
# Error in sample.split(smsSparse$sentiment, SplitRatio = 0.7) :
# Error in sample.split: 'SplitRatio' parameter has to be i [0, 1] range or [1, length(Y)] range
根据this帖子的建议,我将“smsSparse $ Negative = sms $ Negative ”更改为“smsSparse $ Negative = sms $ negative ”,但它没有帮助。我也尝试了7/10和0,7而不是0.7。结果相同。
有人可以告诉我为什么R认为0.7不在0和1之间吗?
答案 0 :(得分:1)
我以前从未使用过sample.split
函数。但是,通常我不使用这样的函数对数据进行分区。例如,假设我想将虹膜数据集划分为训练和测试数据集,我希望训练大约是原始数据集大小的70%。然后我可以这样做:
data(iris)
#Create a random sample of integers sample from 1 to nrow(iris)
samp <- sample(1:nrow(iris), size=round(0.7*nrow(iris)), replace=FALSE)
train <- iris[samp,] #Only takes rows that are in samp
test <- iris[-samp,] #Omits the rows that were in samp
除了,
或[samp,]
中不需要[-samp,]
之外,对向量也可以这样做。我希望有所帮助。否则,也许提供前6个条目smsSparse $情绪可能会帮助人们识别问题。
答案 1 :(得分:0)
检查smsSparse$sentiment
是否正确分配。如果在cbind
期间发生任何错误或任何拼写错误,R会抛出这样的错误。
答案 2 :(得分:0)
正如有人提到的那样,这可能是一个赋值错误,ex拼写错误,或者该列不存在或为null,或者即使您基于其分割的列(因变量)不是一个因素,在哪种情况下,您可以将其转换为一个。 要快速检查,您可以看到smsSparse $情绪的摘要并确认。
答案 3 :(得分:0)
set.seed(1000)
library(caTools)
split = sample.split(letters$isB, SplitRatio = 0.5)
isB应该是因变量的标签,在数据集中查找该名称。
Here,您可以找到引发此错误的原因。
答案 4 :(得分:0)
查看R中定义的 sample.split 函数的代码,您将看到以下代码行
if (SplitRatio >= nSamp)
stop("Error in sample.split: 'SplitRatio' parameter has to be i [0, 1] range or [1, length(Y)] range")
可能有2个原因导致此错误 1)您的数据长度小于SplitRatio 2)split函数的第一个参数为空。
确保要传递的FirstParamter中有数据。
答案 5 :(得分:0)
sample.split实际上在安装和启用软件包caTool时有效。 您可以通过
进行安装install.packages('caTools')
然后通过
启用它library('caTools')
运行完以上几行之后,您可以执行以下操作
split = sample.split(smsSparse$sentiment, SplitRatio = 0.7)
例如,如果您的数据集被称为数据集
然后您可以做类似的事情
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)