开新坑
趁着还没工作,看看有意思的东西,这片文章是解决《GO语言机器学习实战》遇到的一些问题而写的,该书的译版是这样的
这本书大概就讲了一些应用,当然也包括最经典的MNIST手写数字识别。不过我看了一下某宝和某东,发现这本书销量不高,有一说一,小白还是使用主流的python来学习机器学习比较好,毕竟要掌握的知识和遇到的问题太多了。看这书就相当于涨涨见识吧。
在某宝上看到该书的评论,有一个说作者给的代码都是错的,今天试着运行第二章的“线性回归——房价预测”的代码,发现IDE确实报了不少错,而该书毕竟是比较冷门的,也没有看到有什么文章来解决这些问题,幸运的是错误并不多,目前我只是把它修复并完整跑了出来,并没有研究代码是怎么写的。后续还需要看看代码逻辑,接下来还是讲讲代码的修复过程吧。
本书资源
中文译版并没有给出该书代码的资源下载地址,在机械工业出版社我也没发现资源,幸好知道该书的英文名,还真让我搜到了。巧的是第二章给出的数据集的地址也是错的,不知道是不是译本的问题。顺便给出遇到问题的第三方库gonum的地址吧。
问题以及解决
导包
这没什么好说的,直接go mod tidy,我最后得到的go.mod文件如下
module GOML
go 1.15
require (
github.com/pkg/errors v0.9.1
github.com/sajari/regression v1.0.1
golang.org/x/exp v0.0.0-20210511203234-0325d671925d
gonum.org/v1/gonum v0.9.1
gonum.org/v1/plot v0.9.0
gorgonia.org/tensor v0.9.20
gorgonia.org/vecf64 v0.9.0
)
代码报错
导完包后,右边栏就是一大段报错了,不过棘手的也就是一处
最多的报错就是跟plot相关的代码了,整个代码的报错地方有
第249行、277行、310行的
p, err := plot.New()
与第325行的
l, err := plot.NewLegend()
以及第355行的
l.Font.Size = 5
比较棘手的第481行的
corr := stat.CorrelationMatrix(nil, m64, nil)
与第493行的
if c := corr.At(i, j); math.Abs(c) >= 0.5 && h1 != h2
解决方案
对于与plot相关的报错,点进plot.New()代码里面发现其代码是这样的
// New returns a new plot with some reasonable default settings.
func