第1关:特征工程—类别特征
任务描述
本关任务:对类别特征进行编码 ,使其能够直接应用于模型。
相关知识
为了完成本关任务,你需要掌握: 1.类型变量的处理方法; 2.如何使用 python 进行热编码。
#coding:utf8
import pandas as pd
import os
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
def one_hot(data):
data['age']=data['age'].replace({'16-25岁':1,'26-35岁':2,'46-55岁':3,'36-45岁':4,'56岁以上':5,'未知':-1})
id_data=data.drop(['sex'],axis=1)
data_new3=pd.get_dummies(data['sex'],prefix='sex')
data=pd.concat((id_data,data_new3),axis=1)
return data
if __name__=='__main__':
data=pd.read_csv('./data/User.csv',dtype={'sex':int})
one_hot(data)
第2关:特征工程—特征提取和衍生
任务描述
本关任务:处理时间空间特征变量,提取衍生变量。
相关知识
为了完成本关任务,你需要掌握: 1.python 对时间变量处理技巧; 2.时间空间特征的处理方法。
#coding:utf8
import pandas as pd
def get_feature_action(action):
week_actions=pd.pivot_table(action,values='time',index=['user_id','mark'],columns='type',aggfunc='count',fill_value=0).add_prefix('all_product_type_')
week_cate_action=pd.pivot_table(action,values='time',index=['user_id','mark'],columns='cate',aggfunc='count',fill_value=0).add_prefix('all_cate_')
week_brand_action=pd.pivot_table(action,values='time',index=['user_id','mark'],columns='brand',aggfunc='count',fill_value=0).add_prefix('all_product_brand_')
data=pd.concat([week_actions,week_cate_action,week_brand_action],axis=1)
data=data.reset_index()
return data
def jiheshuju(action):
action['last_date']=(action['mark']-action['time']).map(lambda x:x.seconds)
result=pd.pivot_table(action,values='last_date',index=['user_id','mark'],columns='type',aggfunc='min').add_prefix('diff_time_')
result=result.reset_index()
return result
第3关:特征工程—特征选择
任务描述
本关任务:在已有的特征中进行特征选择。
相关知识
为了完成本关任务,你需要掌握:特征选择的原理和方法。
#coding:utf8
import pandas as pd
from numpy.core.umath_tests import inner1d
from sklearn.ensemble import RandomForestClassifier
def get_feature_importance(data):
x=data.drop(['user_id','mark','Y'],axis=1)
y=data['Y']
clf=RandomForestClassifier()
clf.fit(x,y)
feature_importances=pd.DataFrame({'feature':x.columns,'feature_importances_':clf.feature_importances_}).sort_values(by='feature_importances_',ascending=False)
return feature_importances