做数据挖掘和 模型训练评分,有时候不得不对数据是否正确进行验证,
先说 简单的我们验证行数是否正确
wc -l file.txt
比如我们有时候又要看数据内容,一般是前五行和后五行比对
head -n 5 file.txt
tail -n 5 file.txt
有时候我们需要通过运行的输出日志来检验程序是否运行正常,我们知道 尤其是在启动时 日志的输出其实是日志时间序列流,会不断有日志输出,日志一般是以追加的形式写入到日志文件里,所以我们一般是通过监控日志的输出来判断 运行结果和异常
tail -f log.txt
这些都比较简单,也都是shell 最简单的命令
另外高阶
我们通过文件的md5值来验证文件的内容是否在传输后被篡改,这个md5值只验证文件内容,如果你修改文件名,文件的md5值是不会改变的,
mac上的md5 文件检验
md5 file.txt
linux 上的md5文件检验
md5sum file.txt
还有更高阶,我们明知 两个文件有区别来定位区别的位置 ,使用diff
diff file1.txt file2.txt
mac的diff 工具有很多,可视化的还有很多。
以上是大多是对原始文件的数据验证,还有很多时候是对加工处理过 加工后文件做验证,比如不同 加工逻辑特征工程处理过得训练数据 的中间变量,我们 不可能去比对 上千个特征列的每一行数据是否完全一致,毕竟是弱结构化的,而且缺失值严重 异常值也有,数据类型也会导致一部分问题,这个时候一是追本溯源,清源正本,我们要去关照我们的代码是怎么写的,加工逻辑有没有哪些具体的出入,结合加工文档来看,另外就是看最后的输出评分结果,我们将不同加工逻辑的输出结果以 gid phone idcard 等主键来关联 做join 我们来看 不同加工逻辑的评分结果对比,假如各段分箱 数量相似,且 每一个人的评分大致相差不多,说明加工逻辑相似的,假如大部分的人的 评分差异很大,分箱各段数量也发生了变化,那肯定有大问题