Feature Engineering 特征工程 1. Baseline Model
文章目录
- 1. 读取数据
- 2. 处理label
- 3. 添加特征
- 4. 数据集切片
- 5. 训练
- 6. 预测
learn from https://www.kaggle.com/learn/feature-engineering
下一篇:Feature Engineering 特征工程 2. Categorical Encodings
1. 读取数据
预测任务:用户是否会下载APP,当其点击广告以后
数据集:ks-projects-201801.csv
- 读取数据,指定两个特征
'deadline','launched'
,parse_dates
解析为时间
ks = pd.read_csv('ks-projects-201801.csv',parse_dates=['deadline','launched'])
预测Kickstarter项目是否会成功。state
作为结果label
可以使用类别category
,货币currency
,资金目标funding goal
,国家country
以及启动时间launched
等特征
2. 处理label
- 准备标签列,看看有哪些值,转换成可用的数字格式
pd.unique(ks.state)
有6种数值
array(['failed', 'canceled', 'successful', 'live', 'undefined','suspended'], dtype=object)
每种多少个?按state
分组,每组中ID
行数有多少
ks.groupby('state')['ID'].count()
state
canceled 38779
failed 197719
live 2799
successful 133956
suspended 1846
undefined 3562
Name: ID, dtype: int64
- 简单处理下标签列,正在进行的项目
live
丢弃,successful
的标记为1,其余的为0
ks = ks.query('state != "live"') # live行不要
ks = ks.assign(outcome=(ks['state']=='successful').astype(int))
# label 转成1,0,int型
3. 添加特征
- 把
launched
时间拆分成,年月日小时,作为新的特征
ks = ks.assign(hour=ks.launched.dt.hour,day=ks.launched.dt.day,month=ks.launched.dt.month,year=ks.launched.dt.year)
ks.head()
- 转换文字特征
category, currency, country
为数字
from sklearn.preprocessing import LabelEncodercat_features = ['category','currency','country']
encoder = LabelEncoder()encoded = ks[cat_features].apply(encoder.fit_transform)
encoded.head(10)
- 将选择使用的特征合并在一个数据里
X = ks[['goal', 'hour', 'day', 'month', 'year', 'outcome']].join(encoded)
X.head()
4. 数据集切片
- 数据切片,按比例分成训练集、验证集、测试集(0.8,0.1,0.1)
- 更高级的简单做法
sklearn.model_selection.StratifiedShuffleSplit
valid_ratio = 0.1
valid_size = int(len(X)*valid_ratio)
train = X[ : -2*valid_size]
valid = X[-2*valid_size : -valid_size]
test = X[-valid_size : ]
需要关注下,label 在每个数据集中的占比是否接近
for each in [train, valid, test]:print("Outcome fraction = {:.4f}".format(each.outcome.mean()))
Outcome fraction = 0.3570
Outcome fraction = 0.3539
Outcome fraction = 0.3542
5. 训练
- 使用LightGBM模型进行训练
机器学习算法之LightGBM
feature_cols = train.columns.drop('outcome')dtrain = lgb.Dataset(train[feature_cols], label=train['outcome'])
dvalid = lgb.Dataset(valid[feature_cols], label=valid['outcome'])param = {'num_leaves': 64, 'objective': 'binary'}
param['metric'] = 'auc'
num_round = 1000
bst = lgb.train(param, dtrain, num_round, valid_sets=[dvalid],early_stopping_rounds=10, verbose_eval=False)
6. 预测
- 对测试集进行预测
from sklearn import metrics
ypred = bst.predict(test[feature_cols])
score = metrics.roc_auc_score(test['outcome'], ypred)print(f"Test AUC score: {score}")
下一篇:Feature Engineering 特征工程 2. Categorical Encodings
Feature Engineering 特征工程 1. Baseline Model相关推荐
- Feature Engineering 特征工程 2. Categorical Encodings
文章目录 1. Count Encoding 计数编码 2. Target Encoding 目标编码 3. CatBoost Encoding learn from https://www.kagg ...
- Feature Engineering 特征工程 4. Feature Selection
文章目录 1. Univariate Feature Selection 单变量特征选择 2. L1 regularization L1正则 learn from https://www.kaggle ...
- Feature Engineering 特征工程 3. Feature Generation
文章目录 1. 组合特征 2. 过去7天的数据 3. 上一个相同类型的项目的时间 4. 转换数值特征 learn from https://www.kaggle.com/learn/feature-e ...
- 特征工程(feature engineering)是什么?特征工程(feature engineering)包含哪些方面?
特征工程(feature engineering)是什么?特征工程(feature engineering)包含哪些方面? 设想一个场景,警方在询问目击证人的情形,那些问题需要被询问? ① 男性 OR ...
- ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架
ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架 目录 Feature Engineering思路框架 1.结合Kaggle比赛的某一案例细究F ...
- 特征工程的宝典-《Feature Engineering for Machine Learning》翻译及代码实现
由O'Reilly Media,Inc.出版的<Feature Engineering for Machine Learning>(国内译作<精通特征工程>)一书,可以说是特征 ...
- Feature Tools:自动特征工程(翻译)
1.说明 此文为翻译转载 - 项目文献 - 原文代码 2.正文 机器学习模型只能从我们给定的数据中学习,所以构造一个和任务相关的特征是至关重要的,参见优质论文<A Few Useful Thin ...
- Pyspark让pandas特征工程代码在集群上飞起来——天猫复购率baseline
Pyspark让pandas特征工程代码在集群上飞起来--天猫复购率baseline 环境与数据准备 导包 创建spark应用 第一种特征工程方式:pyspark.pandas.dataframe 第 ...
- Titanic 泰坦尼克数据集 特征工程 机器学习建模
以下内容为讲课时使用到的泰坦尼克数据集分析.建模过程,整体比较完整,分享出来,希望能帮助大家.部分内容由于版本问题,可能无法顺利运行. Table of Contents 1 经典又有趣的Titan ...
最新文章
- 计算1+2+……+N的和。
- 验证:使用node 12.18.4版本安装vue cli4没有问题(先卸载vue cli2再安装)
- myeclipse 8.5-9.0 安装 svn 方法 《转载》
- jax-rs jax-ws_在JAX-RS中使用@Context [第1部分]
- k8s挂载目录_拥抱云原生,如何将开源项目用k8s部署?
- Linux笔记-使用crontab定时调用sh文件
- 天线决定接受频率_你从没思考过的天线定义
- 【穷举】用c#实现一个数组(1,1,2,2,3,3,4,4)排列,每两个相同数字中间都间隔了这个数字个数...
- 包邮送55本数据分析、R、Python相关书籍,想要什么自己定~
- 二哥杂货铺matlab安装步骤,Matlab2017a软件安装教程
- Xshell 6安装和使用教程
- elas源码赏析(二)sobel算子3*3行列分解快速卷积
- phalapi 开发流程
- 目标跟踪技术及其数据集
- 会声会影浪漫婚礼视频——美到想哭
- Vue-cli3项目seo优化--静态化打包(动态改变页面Titl、keyWords、description)
- 对rman命令report obsolete的一点说明
- python文件处理,去除内含子,拼接外显子
- QNAP 威联通(NAS)安装百度云(Linux方案)
- rc.conf中 cpu_preq的设定
热门文章
- php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理)
- ssh 介绍 和使用 程序不挂起
- Linux:Access time、 Modify time 、Change time 和 find 命令使用解析
- 数据有序_Redis实战(3)-数据结构List实战一之商品信息的有序存储
- LeetCode371——Sum of Two Integers(不用+)
- django--通过model拿到字段对象
- the params of sys aud mod req msgs from TV
- oracle 12.2.0.1 搭建 active dataguard
- bzoj1053: [HAOI2007]反素数ant
- SequoiaDB 系列之六 :源码分析之coord节点