[机器学习] 特征工程学习

个人学习记录,不定时更新相关内容

生成特征变量

个体变量时间序列样本排列之 cumcount

cumcount
通过groupby()函数和cumcount()函数生成分类数据的样本排列值。默认从0开始计数

raw["dcount"] = raw.groupby(['cfips'])['row_id'].cumcount()

字符串映射为数字

pandas.factorize()
将送入的字符映射成数字,原则是相同的字符对应同一个数字。
观察直到,该函数输入一个sequence,返回一个元组,包含一个array对象和index类型对象。
其实就是将分类字符串进行编码,用数字表示

raw['county_i'] = (raw['county'] + raw['state']).factorize()[0]
raw['state_i'] = raw['state'].factorize()[0]

回归预测生成数据

通过与年度序列建立回归,生成以后的年度的数据

# demo
# fit a linear regression
import statsmodels.formula.api as sm
fit = sm.ols(formula="dependent_variable ~ independent_variable", data=df).fit()
print(fit.summary())
predict = fit.predict(df)
df['fitted'] = predict

# fit a linear regression
import statsmodels.formula.api as sm
for i in list(census.columns)[2:7]:
    print('-'*50)
    print('处理{}中'.format(i))
    fit = sm.ols(formula=f"{i}_ratio ~ year", data=census).fit()
    print(fit.summary())
    predict = fit.predict(census)
    df['fitted'] = predict

回归结果

用变量生成滞后变量 lag_n

用变量生成差值变量 diff_n

生成增长率 ratio

增长率(growth rate)也称增长速度,它是时间序列中报告期观察值与基期观察值之比减1 后的结果,用%表示。由于对比的基期不同,增长率可以分为环比增长率和定基增长率。
环比增长速度=(报告期发展水平-基期发展水平)/绝对值基期发展水平

发展速度

环比发展速度=报告期发展水平/基期发展水平=环比增长速度+1

日期数据提取

年份数据

假设变量存在随着年份而变动的情况,可以将年份数据转换为数值型数据(int)

data.year = data['year'].astype('int')

月份数据

如果样本中月份数据是关于12个月份的话。可以将月份数据get_dummies,生成独热特征变量。调用drop_first=True可以避免多重共线性

data = pd.get_dummies(data, columns=['month'], drop_first=True)

生成均值特征变量 mean

对于多个个体,可以根据个体进行分类,生成关于个体的均值特征变量

df = data.groupby('cfips']['density'].agg([('denstiy_mean',np.mean)])
data = data.merge(df,on=['cfips'], how='left')

特征变量调整

极端值处理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值