这篇文章会不定时的记录一些gbdt,xgboost,pandas实现过程中遇到的一些问题。
1. 错误日志
DtypeWarning: Columns (6,7) have mixed types.
初始化xgboost的DMatrix时,raise TypeError('can not intialize DMatrix from {}'.format(type(data).__name__))
2. 问题分析
pandas在读取数据时,提示第6,7列数据是混合类型,即可能有异常值。但是在异常值处理后(df.fillna(-1, inplace=True))后,仍然报错;刚开始觉得可能是,某些特定的列,值太大或者太小,因此sample了一部分的数据,运行统计分布的脚本,并没有发现异常,说明只有极少部分的数据有错。看一下所有的列的数据,发现是有一行数据的列数不对,特征的那一列是空;
3. 后期快速定位
1. 快速sample一部分数据看分布;
2. awk -F',' 看下数据的列数是不是全部一致,原先遇到这个问题,也会检查head -10的部分是否一致,但这次bug是后面的某一列数据有异常;
3. grep ',\\N,' train.csv.bk 快速查看一下数据中是否有,\N,其中\N是hive中的空值。