我有一个有两列的数据。一列包含文本。该列的每一行包含三个不同类别(技能、资格、经验)的某种类型的数据,其他列是它们各自的类标签。
数据文件的快照:

如何应用软件包e1071中的svm。如何将文本数据列转换为分数。我想把文本列转换成文档术语矩阵。他们还有别的办法吗?如何制作d-t矩阵?
发布于 2016-10-14 21:02:13
您可以使用RTextTools包创建文档术语矩阵。使用create_matrix函数:
# Create the document term matrix. If column name is v1
dtMatrix <- create_matrix(data["v1"])然后,您可以使用以下方法来训练支持向量机模型:
# Configure the training data
container <- create_container(dtMatrix, data$label, trainSize=1:102, virgin=FALSE)
# train a SVM Model
model <- train_model(container, "SVM", kernel="linear", cost=1)有关信息,RTextTools user e1071内部将对模型进行培训。
有关更多细节,请参阅RTextTools和e1071文档。
发布于 2017-07-12 07:16:10
您可以使用R中的汤姆逊包对文本进行预处理,然后才能形成文档术语矩阵,其中包括-删除停止词、标点符号、数字、规范化(USA = U.S.A)、词干词干等,为dtm -( tfidf)添加加权以增加重要术语的重要性。
完成这些步骤后,可以使用e1071中的svm()来训练分类器
fit <- svm(x, y, kernel = "linear") 这里,
x = dtm
y = a vector of the corresponding labels 使用该模型来预测测试数据的类(确保您的测试数据也已被预处理)。
发布于 2020-09-17 13:52:07
我还考虑使用RTextTools。它的实现相对容易。但是,如果您的数据存在类不平衡,则这是无用的。它不允许您控制容器中的分层分割。
container <- create_container(dtMatrix, data$label, trainSize=1:102, virgin=FALSE)您不知道类标签的比例如何在"trainSize=1:102“参数中结束。它也没有得到维持。所以,我会避免使用它。
https://stackoverflow.com/questions/40051542
复制相似问题