r - 文本分类-当训练数据和测试数据具有不同特征时该怎么办

标签 r machine-learning text-mining text-classification

我正在执行二进制文本分类。我必须将一条推文分类为 0(如果是中立)和 1(如果是仇恨言论)。

因此,作为一般经验法则,我对数据进行了预处理。创建术语文档频率并删除稀疏术语后,我将数据分为训练和测试。 我使用随机森林和逻辑回归训练我的模型,效果很好。

set.seed(123)
tweetRand = randomForest(label ~ ., data = train_sparse, importance=TRUE, nTree=500 )
randPridct = predict(tweetRand, newdata = test_sparse)
table(test_sparse$label,randPridct >=0.5)

它在从原始内容中划分出的测试数据上运行良好。 但是当我在新的看不见的数据上运行它时,它会抛出异常。

> predicrRand_test=predict(tweetRand, newdata=sparse_4testing)
Error in eval(predvars, data, env) : object 'run' not found

我的理解是,“运行”是训练中存在的一个功能,但不存在于看不见的测试数据中,并且在我的模型训练期间,“运行”包含在 tdm 中。 在 test 的预处理中,run 不在 test tdm 中。

那么我应该如何处理这些情况。我是数据科学的新手。请帮忙。

最佳答案

在这种情况下,通常最好的方法是忽略实时测试数据中的新功能( token )。

您可以通过以下方式实现此目的:

  • 构建训练词汇表(创建训练集中使用的所有功能/标记的集合)。
  • 过滤所有新测试实例,删除训练词汇表中未包含的所有标记/功能。

关于r - 文本分类-当训练数据和测试数据具有不同特征时该怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49325181/

相关文章:

r - 比较数据帧中的单词并计算每对最大单词长度的矩阵

r - dplyr 无法使用 group_by() 重新定义类型

r - 尺寸在 geom_point 中的真正含义是什么?

r - 如何将 SAS 格式文件导入 R?

machine-learning - 使用迁移学习使用单类数据集进行图像分类

python - 输入层的形状

R for 循环 n 次

machine-learning - 为什么线性回归称为 'linear' ?

java - 从数据库输入数据并进行处理

python - 从 Python 中的非结构化文本中提取一个人的年龄