gpt4 book ai didi

machine-learning - 垃圾邮件分类器 Clojure

转载 作者:行者123 更新时间:2023-11-30 08:53:18 25 4
gpt4 key购买 nike

我一直在尝试在 Clojure 中实现垃圾邮件分类器。我一直在使用的引用书是《集体智慧》。下面是训练分类器的train方法:

(defn train
[t cat]
(incc cat)
(let [ws (keys (getwords t))]
(for [w ws] (incf w cat))))

这是我编写的示例训练方法,只是为了将一些训练数据转储到分类器中,这样我就不必每次都手动训练它。

(defn sampletrain
[]
(do
(train "Nobody owns the water." "good")
(train "the quick rabit jumps fences" "good")
(train "buy pharmaceuticals now" "bad")
(train "make quick money at the online casino" "bad")
(train "the quick brown fox jumps" "good")))

不幸的是,sampletrain 方法仅使用分类为“好”的最后一个项目或句子“the Quick Brown Fox Jumps”来训练我的分类器。最后我的分类器如下所示:{“the”{“good”1},“quick”{“good”1},“brown”{“good”1},“fox”{“good”1},“jumps”{“good”1} }。如您所见,它仅使用最后一项进行了训练。为了避免这种情况,我用“do”语句包装了所有内容,但我无法弄清楚为什么只执行了“train”方法的最后一个调用。

最佳答案

Clojure 使用隐式返回,do 语句也是如此,因此每个句子都会调用 train,但您只返回最后计算的表达式的值。您可以将其包装在一个结构中以返回所有它们。

结果封装在向量中:

(defn sampletrain
[]
[(train "Nobody owns the water." "good")
(train "the quick rabit jumps fences" "good")
(train "buy pharmaceuticals now" "bad")
(train "make quick money at the online casino" "bad")
(train "the quick brown fox jumps" "good")])

关于machine-learning - 垃圾邮件分类器 Clojure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53090918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com