我有一个包含两列的数据框。一列包含文本。该列的每一行包含三种不同类别(技能,资格,经验)的某种类型的数据,其他列是它们各自的类标签。
数据框的快照:
如何从包e1071应用svm。如何将文本数据列转换为某个分数。我想过将文本列转换为文档术语矩阵。他们是其他任何方式吗?如何制作d-t矩阵?
答案 0 :(得分:5)
您可以使用RTextTools个包来创建文档字词矩阵。 使用create_matrix函数:
# Create the document term matrix. If column name is v1
dtMatrix <- create_matrix(data["v1"])
然后您可以使用以下方法训练您的SVM模型:
# 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 用户 e1071 打包以培训模型。
有关详细信息,请参阅RTextTools和e1071文档。
答案 1 :(得分:0)
您可以在R中使用tm包。您必须在形成文档术语矩阵之前预处理文本,其中包括 - 删除停用词,标点符号,数字,规范化(USA = USA),词干等添加权重到dtm - (tfidf)以增加对重要术语的重要性。
完成这些步骤后,您可以使用e1071中的svm()来训练分类器
fit <- svm(x, y, kernel = "linear")
下面,
x = dtm
y = a vector of the corresponding labels
使用该模型预测测试数据的类(确保您的测试数据也经过预处理)
答案 2 :(得分:0)
我还考虑过使用 RTextTools 。它具有相对容易的实现。但是,如果您的数据存在类不平衡,那将是无用的。它不允许您控制容器中的分层拆分。
{{1}}
您不知道类标签的比例在“ trainSize = 1:102”参数中将如何结束。 它也没有得到维护。因此,我将避免使用它。