对于机器学习的从业者或者兴趣爱好者而言,kaggle提供了一个机器学习相关的竞技和交流平台.通过比赛和讨论分享,可以知道自己的水平并找到提高的方向.
通常我们会用 pandas 来载入数据,并做一些简单的可视化来理解数据。
Visualization,通常来说 matplotlib 和 seaborn 提供的绘图功能就可以满足需求了。
比较常用的图表有:
查看目标变量的分布。当分布不平衡时,根据评分标准和具体模型的使用不同,可能会严重影响性能。
对 Numerical Variable,可以用 Box Plot 来直观地查看它的分布。
对于坐标类数据,可以用 Scatter Plot 来查看它们的分布趋势和是否有离群点的存在。
对于分类问题,将数据根据 Label 的不同着不同的颜色绘制出来,这对 Feature 的构造很有帮助。
绘制变量之间两两的分布和相关度图表。
Feature Engineering Techniques,这篇文章是kaggle上面的一位grandmaster分享的特征工程常用操作,摘录如下.
df = pd.concat([train[col],test[col]],axis=0)
# PERFORM FEATURE ENGINEERING HERE
train[col] = df[:len(train)]
test[col] = df[len(train):]
df[col].fillna(-999, inplace=True)
df[col],_ = df[col].factorize()
if df[col].max()<128: df[col] = df[col].astype('int8')
elif df[col].max()<32768: df[col] = df[col].astype('int16')
else: df[col].astype('int32')
for col in df.columns:
if df[col].dtype=='float64': df[col] = df[col].astype('float32')
if df[col].dtype=='int64': df[col] = df[col].astype('int32')
df[col] = df[col].astype('category')
df['uid'] = df[‘card1’].astype(str)+’_’+df[‘card2’].astype(str)
df['x1_x2'] = df['x1'] * df['x2']
temp = df['card1'].value_counts().to_dict()
df['card1_counts'] = df['card1'].map(temp)
temp = df.groupby('card1')['TransactionAmt'].agg(['mean'])
.rename({'mean':'TransactionAmt_card1_mean'},axis=1)
df = pd.merge(df,temp,on='card1',how='left')
df[col] = ( df[col]-df[col].mean() ) / df[col].std()
df['D3_remove_time'] = df['D3'] - df['D3_week_mean']