📅  最后修改于: 2020-12-02 06:46:28             🧑  作者: Mango
在本章中,我们将使用本书第1部分中抓取的数据。数据中的文字描述了自由职业者的个人资料,以及他们按美元收取的小时费率。下一节的想法是建立一个模型,该模型给出了自由职业者的技能,我们能够预测其小时薪。
下面的代码显示了如何转换原始文本,在这种情况下,原始文本具有成组的单词矩阵。为此,我们使用一个名为tm的R库。这意味着我们为语料库中的每个单词创建一个变量,其中包含每个变量的出现次数。
library(tm)
library(data.table)
source('text_analytics/text_analytics_functions.R')
data = fread('text_analytics/data/profiles.txt')
rate = as.numeric(data$rate)
keep = !is.na(rate)
rate = rate[keep]
### Make bag of words of title and body
X_all = bag_words(data$user_skills[keep])
X_all = removeSparseTerms(X_all, 0.999)
X_all
# <>
# Non-/sparse entries: 4057/549101
# Sparsity : 99%
# Maximal term length: 80
# Weighting : term frequency - inverse document frequency (normalized) (tf-idf)
### Make a sparse matrix with all the data
X_all
现在我们将文本表示为稀疏矩阵,我们可以拟合一个将提供稀疏解决方案的模型。对于这种情况,一个很好的选择是使用LASSO(最小绝对收缩和选择运算符)。这是一个回归模型,能够选择最相关的特征来预测目标。
train_inx = 1:200
X_train = X_all[train_inx, ]
y_train = rate[train_inx]
X_test = X_all[-train_inx, ]
y_test = rate[-train_inx]
# Train a regression model
library(glmnet)
fit
现在,我们有了一个模型,该模型可以给出一组技能来预测自由职业者的时薪。如果收集更多数据,则模型的性能将提高,但是实现此管道的代码将相同。