文章目录

  • 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相关推荐

  1. Feature Engineering 特征工程 2. Categorical Encodings

    文章目录 1. Count Encoding 计数编码 2. Target Encoding 目标编码 3. CatBoost Encoding learn from https://www.kagg ...

  2. Feature Engineering 特征工程 4. Feature Selection

    文章目录 1. Univariate Feature Selection 单变量特征选择 2. L1 regularization L1正则 learn from https://www.kaggle ...

  3. Feature Engineering 特征工程 3. Feature Generation

    文章目录 1. 组合特征 2. 过去7天的数据 3. 上一个相同类型的项目的时间 4. 转换数值特征 learn from https://www.kaggle.com/learn/feature-e ...

  4. 特征工程(feature engineering)是什么?特征工程(feature engineering)包含哪些方面?

    特征工程(feature engineering)是什么?特征工程(feature engineering)包含哪些方面? 设想一个场景,警方在询问目击证人的情形,那些问题需要被询问? ① 男性 OR ...

  5. ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架

    ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架 目录 Feature Engineering思路框架 1.结合Kaggle比赛的某一案例细究F ...

  6. 特征工程的宝典-《Feature Engineering for Machine Learning》翻译及代码实现

    由O'Reilly Media,Inc.出版的<Feature Engineering for Machine Learning>(国内译作<精通特征工程>)一书,可以说是特征 ...

  7. Feature Tools:自动特征工程(翻译)

    1.说明 此文为翻译转载 - 项目文献 - 原文代码 2.正文 机器学习模型只能从我们给定的数据中学习,所以构造一个和任务相关的特征是至关重要的,参见优质论文<A Few Useful Thin ...

  8. Pyspark让pandas特征工程代码在集群上飞起来——天猫复购率baseline

    Pyspark让pandas特征工程代码在集群上飞起来--天猫复购率baseline 环境与数据准备 导包 创建spark应用 第一种特征工程方式:pyspark.pandas.dataframe 第 ...

  9. Titanic 泰坦尼克数据集 特征工程 机器学习建模

    以下内容为讲课时使用到的泰坦尼克数据集分析.建模过程,整体比较完整,分享出来,希望能帮助大家.部分内容由于版本问题,可能无法顺利运行. Table of Contents 1  经典又有趣的Titan ...

最新文章

  1. 计算1+2+……+N的和。
  2. 验证:使用node 12.18.4版本安装vue cli4没有问题(先卸载vue cli2再安装)
  3. myeclipse 8.5-9.0 安装 svn 方法 《转载》
  4. jax-rs jax-ws_在JAX-RS中使用@Context [第1部分]
  5. k8s挂载目录_拥抱云原生,如何将开源项目用k8s部署?
  6. Linux笔记-使用crontab定时调用sh文件
  7. 天线决定接受频率_你从没思考过的天线定义
  8. 【穷举】用c#实现一个数组(1,1,2,2,3,3,4,4)排列,每两个相同数字中间都间隔了这个数字个数...
  9. 包邮送55本数据分析、R、Python相关书籍,想要什么自己定~
  10. 二哥杂货铺matlab安装步骤,Matlab2017a软件安装教程
  11. Xshell 6安装和使用教程
  12. elas源码赏析(二)sobel算子3*3行列分解快速卷积
  13. phalapi 开发流程
  14. 目标跟踪技术及其数据集
  15. 会声会影浪漫婚礼视频——美到想哭
  16. Vue-cli3项目seo优化--静态化打包(动态改变页面Titl、keyWords、description)
  17. 对rman命令report obsolete的一点说明
  18. python文件处理,去除内含子,拼接外显子
  19. QNAP 威联通(NAS)安装百度云(Linux方案)
  20. rc.conf中 cpu_preq的设定

热门文章

  1. php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理)
  2. ssh 介绍 和使用 程序不挂起
  3. Linux:Access time、 Modify time 、Change time 和 find 命令使用解析
  4. 数据有序_Redis实战(3)-数据结构List实战一之商品信息的有序存储
  5. LeetCode371——Sum of Two Integers(不用+)
  6. django--通过model拿到字段对象
  7. the params of sys aud mod req msgs from TV
  8. oracle 12.2.0.1 搭建 active dataguard
  9. bzoj1053: [HAOI2007]反素数ant
  10. SequoiaDB 系列之六 :源码分析之coord节点