如何使用数据项矩阵作为输入来调整朴素贝叶斯分类器参数

时间:2019-03-29 10:04:55

标签: r naivebayes

我想调整朴素贝叶斯分类器的参数,这些参数根据歌曲歌词来预测艺术家的名字。

要构建模型,我使用create_matrix将歌词转换为数据项矩阵。 如果歌词的列中包含单词,则每个单元格都包含“是”,否则。 该矩阵是模型的输入,艺术家名称是类。 我添加了参数laplace。我从laplace = 0.5开始。 但是我不会如何选择合适的拉普拉斯值,如何解释我的结果并确保分类器是否不能给出哈达德的结果。 另外,我不知道是否有任何其他参数可以调整/改善我的模型。 以下代码显示了用于构建分类器的代码。 数据是一个包含歌词和歌手姓名的数据框

data.dt_matrix<-create_matrix(data$lyrics,ngramLength=1,weighting = tm::weightTfIdf)
data_training<-apply(data.dt_matrix, MARGIN = 2,convert_values)
data_training<-data_training[sample(nrow(data_training)),]
folds<-folds(data$Class, nfolds = 5, stratified=TRUE, seed = 2016)

for(i in 1:5){
  #Segement your data by fold using the which() function 
  testIndexes <- which(folds==i,arr.ind=TRUE)
  testData <- data_training[testIndexes, ]
  testLables<-data[testIndexes,]
  trainLabels<-data[-testIndexes,]
  trainData <- data_training[-testIndexes, ]

  model <- 
  naiveBayes(as.matrix(trainData),as.factor(trainLabels$Class),laplace=0.5) 

  pred<- predict(model, as.matrix(testData))
  true.labels<-as.factor(testLables$Class)
  mConfusion<-table(true.labels,pred)
  acc<-(mConfusion[1,1]+mConfusion[2,2]+mConfusion[3,3])/sum(mConfusion)
  TrainErr<-1-acc
  print(TrainErr)
  AvgTrErr=TrainErr+AvgTrErr
  #Use the test and train data partitions however you desire...
}
print (AvgTrErr/5)

5次交叉验证后计算出的训练误差为0.66。

0 个答案:

没有答案