[1.16更新B14特征处理]津南数字制造题目解读及部分思路~~有趣的特征
Article
2019-01-17 16:03:38
11
1790
11

首先声明,我并不能保证这些特征可以上分,每个人处理方式不同结果肯定不一样。

 
B14特征处理(测了测线上好像可以涨一点)
因为有很多小伙伴私聊我,问我怎么处理缺失值。。。其实我也不知道。。。。今晚之前我都没想过要处理,所以我回答的都是不知道,随便处理了一下。。。哈哈哈
晚上我又仔细看了看。。。处理了一下。。。希望对大家有用吧,其实我开源的方法我自己都没上线测过或者是随便测了测,但是思路给需要的小伙伴参考参考吧。

大家也最好不要私聊私下讨论方案。感觉不太好,其实大家一般问我的,我回复的内容都是我自己乱想的,基本没测过。

处理的步骤和思路都在图和代码里了,应该是还有其他操作的,这种思路小伙伴们可以参考参考。

代码:

<predejavu sans="" mono';font-size:15.0pt;"="">train = train[train['<spanar pl="" ukai="" cn';"="">收率'] > 0.87]
print(len(train))
train.loc[train['B14'] == 40, 'B14'] = 400
train = train[train['B14']>=400]

print(len(train))
train = train[good_cols]
good_cols.remove('<spanar pl="" ukai="" cn';"="">收率')
test = test[good_cols]

test_select = {}
for v in [280, 385, 390, 785]:
print(v)
print(test[test['B14'] == v]['<spanar pl="" ukai="" cn';"="">样本id'])
test_select[v] = test[test['B14'] == v]['<spanar pl="" ukai="" cn';"="">样本id'].index
print(test[test['B14'] == v]['<spanar pl="" ukai="" cn';"="" data-spm-anchor-id="">样本id'].index)
print(test_select[v])</spanar></spanar></spanar></spanar></spanar></predejavu>

<predejavu sans="" mono';font-size:15.0pt;"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"="">
</spanar></spanar></spanar></spanar></spanar></predejavu>

<predejavu sans="" mono';font-size:15.0pt;"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><spanar pl="" ukai="" cn';"=""><predejavu sans="" mono';font-size:15.0pt;"="">for v in test_select.keys():
if v == 280:
x = 0.947
elif v == 385 or v == 785:
x = 0.879
elif v == 390:
x = 0.89

print(v)
print(test_select[v])
# sub_df.iloc[test_select[v]][1] = x
sub_df.loc[test_select[v], 1] = x</predejavu>
</spanar></spanar></spanar></spanar></spanar></predejavu>

------------------------------------------------------------------------更新分割线--------------------------------------------------------------------------------

Motivation

这是一个化学实验相关的比赛,大家高中做化学实验的时候一定学过要用控制变量法吧。因此本文的特征其实就是化学试验中的变量,所以每次做对比实验的时候,都是固定某些变量,改变其中一个变量,这样来进行化学实验的。

那我们怎么操作才能找到对比实验呢???

根据人做实验的惯性思维,或者写代码打比赛的迭代思维。肯定是做完一次实验后,在这次实验的基础上进行调参,调参之后再炼丹,期望得到更好的结果。比赛数据里做实验的人肯定也是这个思路。。毕竟也是人做的实验。所以这也就解释了为什么ID特征很重要。。
 

如何构造相关特征呢?

我们来想象一下做实验的人,怎么炼丹来找趋势呢?他肯定是改变一个参数,测一测结果。。举个例子,把B14的值改一改,这里B14很可能是某种催化剂,记录一下产率,看看催化剂对实验结果的影响。。很遗憾,Lightgbm这类树模型是学不出两次实验之间改变了什么参数的。因此,我们构造两次对比实验之间参数的差值,就可以知道实验人员在上一次实验的基础上进行了哪些修改,模型就能很好的学到其中的奥秘啦。
具体代码
 
对ID排序后,求与前一行的差值,求与后一行差值类似。。。
copy_col = ['B12', 'B14','A6', 'B9', 'B10', 'B11']

all = all.sort_values(keep_col, ascending=True)
all['b14_div_a1_a2_a3_a4_a19_b1b2_b12b13'] = all['B14']/(all['A1']+all['A2']+all['A3']+all['A4']+all['A19']+all['B1']*all['B2']+all['B12']*all['B13'])

# all.loc[all['B14']<=360, 'B14'] = all['B14']+140
ids = all['样本id'].values

all_copy_previous_row = all[copy_col].copy()

all_copy_previous_row['time_mean'] = all_copy_previous_row[['B9','B10','B11']].std(axis=1)
all_copy_previous_row.drop(['B9','B10','B11'], axis=1, inplace=True)
all_copy_previous_row = all_copy_previous_row.diff(periods=1)
all_copy_previous_row.columns = [col_+'_difference'+'_previous' for col_ in all_copy_previous_row.columns.values]

all_copy_following_row = all[copy_col].copy()
all_copy_following_row['time_mean'] = all_copy_following_row[['B9','B10','B11']].std(axis=1)
all_copy_following_row.drop(['B9','B10','B11'], axis=1, inplace=True)

all_copy_following_row = all_copy_following_row.diff(periods=-1)
all_copy_following_row.columns = [col_+'_difference'+'_following' for col_ in all_copy_following_row.columns.values]
# all_copy_following_row['样本id_difference_following'] = all_copy_following_row['样本id_difference_following'].abs()
all_copy_following_row['样本id'] = list(ids)

[1.16更新B14特征处理]津南数字制造题目解读及部分思路~~有趣的特征的更多相关文章

  1. jetbrains idea/webstorm等(注册,激活,破解码,一起支持正版,最新可用)(2017.3.16更新)【转】

    选择 License server (2017.3.16更新) http://idea.imsxm.com/ 详细请参考:  http://www.cnblogs.com/ys-wuhan/p/584 ...

  2. ionic使用CardIO实现扫描银行卡功能(只能扫描16位以下,并且是浮雕数字)

    在一些涉及支付功能的app,一般需要绑定银行卡,除了靠用户手动输入银行卡号,用手机扫描银行卡也是一种常用的手段,查阅了写资料,发现ionic有CardIO插件可以实现这个功能,就兴致冲冲去尝试,结果有 ...

  3. 什么是机器学习的特征工程?【数据集特征抽取(字典,文本TF-Idf)、特征预处理(标准化,归一化)、特征降维(低方差,相关系数,PCA)】

    2.特征工程 2.1 数据集 2.1.1 可用数据集 Kaggle网址:https://www.kaggle.com/datasets UCI数据集网址: http://archive.ics.uci ...

  4. 【转载】webstorm11(注册,激活,破解,码,一起支持正版,最新可用)(2016.11.16更新)

    很多人都发现 http://idea.lanyus.com/ 不能激活了 很多帖子说的 http://15.idea.lanyus.com/ 之类都用不了了 最近封的厉害仅作测试 选择 License ...

  5. react 16更新

    1.render新的返回类型 render方法支持两种新的返回类型:数组(由React元素组成)和字符串 2.错误处理 16之前,组件在运行期间如果执行出错,就会阻塞整个应用的渲染,这时候只能刷新页面 ...

  6. HTML语义化(2016/3/16更新)

    目录 什么是HTML语义化? 为什么要语义化 常用标签的语义 HTML5新元素 一.什么是HTML语义化? 简单来讲就是:每个标签做自己的事,使得能够被机器直接读懂. 二.为什么要语义化? 1.更容易 ...

  7. Java 小游戏 - 井字棋 v1.0 (初步完成) (2018.4.16更新)

      井字棋游戏初步完成 实现功能:输入位置数据->打印棋盘->判断是否胜利->继续游戏/退出游戏 缺点:没有清屏函数   判断胜利方法太过无脑    package MYGAME; ...

  8. 2019微软Power BI 每月功能更新系列——Power BI 4月版本功能完整解读

    Power BI4月份的更新对整个产品进行了重大更新.此版本增加了基于DAX表达式定义视觉效果标题和按钮URL的功能.本月Power BI也新增了许多新的连接器,现在可以使用几种预览连接器,包括Pow ...

  9. 机器学习入门-数值特征-进行多项式变化(将特征投影到高维度上) 1.PolynomialFeatures(将数据变化为多项式特征)

    函数说明: 1. PolynomialFeatures(degree=2, interaction_only=False, include_bias=False) 参数说明:degree=2,表示多项 ...

随机推荐

  1. ubuntu下如何配置terminator(以16.04为例)(转载)

    https://blog.csdn.net/xungjhj/article/details/69377812 Terminator 常用快捷键 命令 说明 Ctrl+Shift+O 水平分割窗口 Ct ...

  2. Jquery的一些基本操作

    /*获得TEXT.AREATEXT的值*/ var textval = $("#text_id").attr("value"); //或者 var textva ...

  3. jsp下载文件

    download.jsp web工程中下载xls文件 <%@ page language="java" import="java.util.*" page ...

  4. HTTP梳理

    HTTP请求头 Host:初始URL中的主机名和端口 Accept:浏览器可接受的MIME类型 Acceept-Charset:浏览器接受的字符集 Accept-Encoding:浏览器能够进行解码的 ...

  5. 翻转单链表 leetcode Reverse Linked List

    翻转一个单链表.这个题目听说很多次了,总感觉肯定不是什么难题. 现在真的有点好高骛远了!总感觉那种很难的算法题才是难题,这种题没必要做.其实眼高手低啊. 这种easy题,我都不能一遍ac,这遇到白板编 ...

  6. jquery接触初级----jquery 选择器

    css 选择器主要有:元素选择器,ID选择器,类选择器,群组选择器,后代选择器,普通配符选择器等,通过css选择,我们可以很方便的给元素添加样式,使网页看起来更加好看 jquery 选择器也有相似的功 ...

  7. Centos 下安装VIM编辑器

    我们在安装完Centos后,它默认的是安装了VI编辑器,VIM是没有安装的,所以我们在使用vim test.txt时会提示: vim command not found ... 这就是说明我们的Lin ...

  8. PropertiesUtil

    PropertiesUtil package com.zjx.util; import java.io.IOException; import java.io.InputStream; import ...

  9. Linux awk命令使用方法

    awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...

  10. java的Timer和TimerTask

    java中Timer类使用的方法是如下的: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() ...