NoOneNoBody
272 天前
好多模型人家都弄好了,写个程序其实不难,不怕见笑,我只会抄
例如 sklearn AgglomerativeClustering 聚类核心代码就两行
agglomerative = AgglomerativeClustering(n_clusters=n_clusters)
clusters = agglomerative.fit_predict(scaled_weighted_features)
但是大量的工作是怎么整理数据符合 fit_predict 的要求,还有就是跑一次可能很耗时,如果结果不理想,就要重新组织数据再一次,再一次,再一次……
更多的工作在查错,因为数据量太大,你搞不清是哪一个样本出错的,或者是怎样的错误
例如跑着跑着断了,报错是维度不一致,想维度问题其实是想不通的,一般数据都是批量处理的,不会出现单个数据维度异常,其实更大可能是某个数据为空或者 np.nan ,模型优先“检查维度”导致报错是维度不一致
原始数据不为空,但一些转换处理会导致部分变为空,例如 rolling 移动窗口首尾有窗口不够的问题,diff 左右值求差必然少一个,过滤数据后忘了“补齐”或“对齐”……诸如此类
还有前面说的 float 类型的事,数据没错,程序逻辑也没错,就是跑起来就报错,因为 pytorch 默认 float32 ,但 numpy 默认 float64……破,搞了我几个小时,一直以为数据错了
如果用到 numba 加速的话,类型也是大问题
个人建议 numpy/pandas 还是要熟,有批量转换和查找的能力,“查找”就是定位,找到哪一行哪一列的数据
我近半年写的代码,写出来都是很快,随机模拟生成数据都能跑,就是用实际数据就断,估计近半时间都是在花类型的查“错”上