机器学习代码实用笔记整理,略乱,实用能看

本文介绍了Python中进行数据预处理和特征工程的一些关键步骤,包括设置数据展示选项、相关性分析、删除列、绘制特征分布图、使用OneHotEncoder编码分类变量、利用featuretools库进行特征衍生、合并数据集、创建新特征、处理时间格式、循环处理相关列、合并计数特征、处理缺失值以及从邮政编码中提取城市信息。这些技巧对于构建机器学习模型至关重要。
摘要由CSDN通过智能技术生成

#MACHINE LEARNING tips
导入库
1)设置读取数据时的最大最小
pd.set_options(‘display.max_columns’,None)
pd.set_options(‘display.max_rows’,None)

1相关性分析
price_numeric = data_train[numeric_features]
correlation = price_numeric.corr()
print(correlation[‘price’].cort_values(ascending = False),’\n’)

2删除列
del price_numeric[‘price’]

3对每个数字特征分布可视化
f = pd.melt(data_train,value_vars = numerical_features)
g = sns.FaceGrid(f,col = ‘variable’,col_wrap = 2,sharex = False,sharey = False)
g = g.map(sns.displot,‘value’)
4 Onehotencoder
data = pd.get_dummies(data,columns = [‘model’,‘brand’,fueltype])

5 featuretools库的使用方法
import peaturetools as ft

7进行特征工程时提前合并数据集
df = data.append(test_data, sort=False)

#等到特征处理结束后在进行训练集与测试集的拆分
	# 5折交叉
df_train = df[~df['y1_is_purchase'].isnull()]
#波浪线是啥
df_train = df_train.reset_index(drop=True)
df_test = df[df['y1_is_purchase'].isnull()]


方法2
train['train'] = 1
test['train'] = 0
data = pd.concat([train,test],ignore_index = True,sort = False)

8普通列特征创建
1
df[‘vlp_ratio’] = df[‘nprem_vlp’] / (df[‘si_vlp’]+1)
2平方项创建
df[‘bt_ratio2’]=df[‘bt_ratio’]**2
9时间格式处理
df[‘birth_month’] = df[‘birth_month’].apply(lambda x: int(x[:-1]) if type(x) != float else 0)

10特征具有连续的列相关性,进行循环啊
for i in np.arange(start=16,stop=20,step=1):
df[str(i)+str(i+1)+‘nprem_ratio’] = df[‘suiche_nonauto_nprem_’+str(i+1)] / (df[‘suiche_nonauto_nprem_’+str()]+1)
df[str(i)+str(i+1)+‘amount_ratio’] = df[‘suiche_nonauto_amount_’+str(i+1)] / (df[‘suiche_nonauto_amount_’+str(i)]+1)
11#看不懂??
for f in [[‘dpt’], [‘client_no’], [‘trademark_cn’], [‘brand_cn’], [‘make_cn’], [‘series’]]:
df_temp = df.groupby(f).size().reset_index()
df_temp.columns = f + [’{}count’.format(’’.join(f))]
df = df.merge(df_temp, how=‘left’)
12#看不懂?
def stat(df, df_merge, group_by, agg):
group = df.groupby(group_by).agg(agg)

columns = []
for on, methods in agg.items():
    for method in methods:
        columns.append('{}_{}_{}'.format('_'.join(group_by), on, method))
group.columns = columns
group.reset_index(inplace=True)
df_merge = df_merge.merge(group, on=group_by, how='left')

del (group)
gc.collect()

return df_merge

def statis_feat(df_know, df_unknow):
for f in tqdm([‘p1_census_register’, ‘dpt’]):
df_unknow = stat(df_know, df_unknow, [f], {
‘y1_is_purchase’: [‘mean’]})

return df_unknow

13缺失值
1)信息统计
data.isnull().sum()
2)可视化
missing = data_train.isnull().sum()/len(data_train)
missing = missing[missing>0]
missing = missing.sort_values()
missing.plot().bar()
3)某一列的缺失值如果存在特殊符号标识进行替换
data[‘date’].replace(’-’,np.nan,impalce = True)
14特征工程后直接删除某些列
del data[‘mmm’]
15特征处理时从邮编中提取城市信息
data[‘city’] = data[‘regioncode’].apply(lambda x: str(x)[:-3])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaggle竞赛指南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值