我正在尝试使用Nak(Scala的机器学习包)。但是,它们无法轻松访问NaiveBayes或Maximum Entropy等基本方法。我想手动完成,但我没能创建NaiveBayes类的实例。他们的部分NaiveBayes代码如下所示:
object NaiveBayes {
class Trainer[L,T](wordSmoothing: Double=0.05, classSmoothing: Double= 0.01) extends Classifier.Trainer[L,Counter[T,Double]] {
type MyClassifier = NaiveBayes[L,T]
override def train(data: Iterable[Example[L,Counter[T,Double]]]) = {
new NaiveBayes(data,wordSmoothing,classSmoothing)
}
}
}
我无法访问Trainer
课程......我不知道为什么。完整的代码可以在这里找到:
https://github.com/scalanlp/nak/blob/master/src/main/scala/nak/classify/NaiveBayes.scala
我尝试编写如下代码:
Trainer train = new Trainer()
或NaiveBayes.Trainer train = new ...
它只是不起作用......
答案 0 :(得分:2)
Trainer
采用类型参数,因此如果无法推断它们,则必须指定它们。例如:
val trainer = new NaiveBayes.Trainer[???,???]()
其中问号应替换为L
和T
的类型参数。根据Classifier.scala中的评论,L
应该是您的标签类型,而T
应该是您观察的类型。