在点击率预估场景中,最经典的就是把类别型数据做onehot编码,然后用LogisticRegression一跑就行。
作者这边在处理阿里妈妈2018的初赛数据,只用部分类别字段,但onehot的话,也有16000维。如果使用pandas.get_dummies进行编码,会得到400000*16000这样规模的矩阵,然后丢给LR,结果就是memory error。貌似,get_dummies的sparse=True,没起啥作用。
不偷懒了,用LabelEncoder+OnehotEncoder!
加载数据中的类别字段
from
虽然指定用str类型读取,但送给LabelEncoder前必须再次astype('str'),否则要报错的。
编码onehot
oh
训练数据tranform后会得到类型为scipy.sparse.csr.csr_matrix的稀疏矩阵。
训练lr
from
这样就ok了。