2017.07.25回顾 骚气EDA研究学习
来源:互联网 发布:c语言词汇 编辑:程序博客网 时间:2024/06/16 18:03
1、上午主要是开发新的rolling variable,算出woe,明天可以完成
2、另外一个主要工作是和新同事交流,关于两个变量分布变化对woe的影响,有一些新的发现,我推翻了昨天自己的猜想,也就是分布变化,woe一定会改变,我发现是能构造出分布改变,但是woe不变的情况,而且分布的变化是能通过卡方检验的,还有就是第二个猜想,分布变化越大,woe变化越大,同事构造的一些数据也说明了不一定成立,我这里衡量分布变化分别用到了卡方检验的p-value,PSI,平均偏差平方和,平均绝对偏差和,woe变化的度量主要是用到平均绝对偏差和、平均偏差平方和,都发现我第二个猜想不成立,于是我想了另外一招,不用构造的方式,而是用随机生成的方式去模拟现实的分布变化,然后让这两个猜想在大概率的情况下成立,这样也是符合我的预期,而且这个实验的方法也是可以解决我第二个问题,大概率服从分布变化越大,woe变化越大,我觉得这是个很有意义的研究内容
3、今天还好,杂事比较少,剩下的大部分时间,开始抄作业,主要学习比较骚气的EDA方法,里面有丰富的画图库使用方法,值得学习,主要就是合理地应用统计图表,还有一些探索思路,这个明天再小结一下
- pandas提供了一些option设置
pd.options.mode.chained_assignment = None
这个设置会关闭掉copywarning,也有人提问到关闭这个warning过后,速度更快,有待验证 pd.options.display.max_columns = 999
这个是DataFrame被输出的时候,如果列数太多,中间的列会被......省略,而这个设置后最后可以显示999列color = sns.color_palette()
这个是用seaborn生成一个调色盘,这个color是一个可以iterration的object,但是似乎没几种颜色- DataFrame也有boxplot方法,原理应该是调用了matplotlib的boxplot方法去生成一个axes对象,我记得那天我看的是不需要去plt.show就可以显示图像啊,可能是看错了,先不管了
- 阿三的那种图效果一般啊,并没有boxplot和hist效果好啊,但也可以几者结合
- numpy就有百分位数的算法,叫做np.percentile(list_like,95),参数就和之前我用到的from scipy import stats,stats.scoreatpercentile类似,参数都一样,不知道内在逻辑是否有差别
- seaborn是matplotlib的封装,sns.distplot(data, bins, kde)封装的是plt.hist,kde是可以拟合出一条核密度函数曲线
- plt.xlabel plt.ylabel plt.title参数都类似,前面字符串,后面可以跟fontsize控制字体大小
- 阿三读入csv的用了一个参数parse_dates指出具体的datetime字段,但是我发现用和不用似乎没有差
- seaborn画柱状图,sns.barplot(data, alpha=0.8, color=),alpha是透明度
- 对于datetime类型的字段,有方法可以直接提取月份,df[datetime_column].dt.month,这个方法应该是datetime类字段独有的方法,dt.month
- 阿三这里看重复主键用了一个很骚气的方法,
(train_df['parcelid'].value_counts().reset_index())['parcelid'].value_counts()
统计的是仅出现1次的,出现2次 and so on - 上面这个重复项的探索还可以深入,把这些重复的输出,看看其他字段是否一样,但是我昨天初步尝试了一下,没能使用出一个pythonic的方法
- 探索missing_value也是段套路算法,
missing_df = prop_df.isnull().sum(axis=0).reset_index()missing_df.columns = ['column_name','missing_count']
然后画横向的柱状图,用barh方法,这个方法plt和axes对象都有,阿三用的axes的barh,再单独说明ticks和tick_label,用axes.set_yticks(ind),axes.set_yticklabels(list_like, rotation='horizontal'),其实建barh的时候就可以通过参数tick_label设定tick_labels,我觉得唯一的缺点是不能rotation。我来后自己用plt也能直接画出barh,如果需要偏转tick_label,也要相对的方法,我IV包中用的就是plt.xticks(x, tick_label, rotation = 30) - seaborn的联合分布看起来很高级,sns.jointplot(x,y,size)
- merge可以df.merge,也可以pd.merge(df1,df2,on,how)
- pd.options.display.max_rows = 65,改变最大可显示的行数
- df的groupby方法和SQL很类似,df.groupby(column).aggregate('count'),就是要group by的字段,和要使用的聚合函数
- 整个dataframe可以求mean,需要指定方向,mean_values = train_df.mean(axis=0)
- 这个mean_values应该是一个series可以直接带入,train_df.fillna(mean_values, inplace=False)
- [i for i in iterable if if],这里又学了一招,只能说python太灵活了,这种后面跟if条件可以连续跟两个,其实就等价于if...and...这种条件啊
- np提供了相关系数计算的方法,np.corrcoef(values1,values2),这个返回的是两个值的交叉矩阵,对角线上必定是1
- column.unique()和set(column)的输出是类似的
- 相关系数矩阵可以用热力图呈现,先取出需要两两画出相关性的column_list,直接通过train_df[column_list]就可以获得新df(看来不一定非要用loc的方式去索引啊),其实这个就相当于df[column]变成了df[columns]。df.corr(method='spearman')这里用spearman相关系数,df的corr方法直接可以输出一个相关系数矩阵的DataFrame,然后用sns.heatmap(corrmat, vmax=1., square=True),第一个参数是data,后面两个参数是什么?看了下文档vmax应该是确定颜色的,square的应该是让生成的图纵坐标和横坐标一一对应
- seaborn的countplot自带配色方案画出来的图只喊一个骚气,
方法的参数我观察到略微有点差异,并不是差异,是两种都可以,sns.countplot(x,data),x可以传一个列名,后面就要把整个数据集data传进去,x直接传一个array-like - 画一个变量不同value上y值的箱线图,sns.boxplot(x,y,data)
- 小提琴图,sns.violinplot,这个图我之前还没见过,就是在箱线图的基础上加多了一个核密度函数的估计曲线,看起来像一个小提琴
- 阿三再最后又使用了一个绘图包,从R上移植过来的ggplot,但是我安装的时候安装成r的版本了,才发现anaconda还可以支持R,真的比较强大
以上,虽然是抄作业,但有很多新东西,和小技巧,下一篇对其整个思路总结一下,看有什么可以改进提升的地方,工具确实用得666
阅读全文
0 0
- 2017.07.25回顾 骚气EDA研究学习
- EDA学习FAQ
- EDA
- EDA?
- kaggle竞赛学习笔记:EDA 和 preprocessing
- 学习回顾
- 回顾学习
- 【回顾】深度学习在语音增强方向上的前沿研究
- EDA学习--Quartus II 9.1最基本的使用方法
- EDA学习--2选1多路选择器
- EDA软件_Cadence软件使用教程视频学习笔记
- FPGA 学习之路(一)EDA软件设计流程
- keil里面骚气的printf
- 深入研究继承、重写(回顾以前的学习,突然发现有不太懂的地方,想知道其根本)
- logistic回归研究 2016.04.28回顾
- 寒假学习回顾总结
- IT技术学习回顾
- android学习回顾
- java8-03-全新的日期时间API
- C++ 引用
- mongodb如何访问远程数据库
- (0058)iOS开发之iOS8新特性IBDesignable的使用
- 求解集合A和集合B的差集
- 2017.07.25回顾 骚气EDA研究学习
- 面向对象 多态作业
- 【cuda】样例目录
- 写python程序需要注意的问题
- Java并发——核心理论
- linux下搭建hadoop和spark环境之安装jdk
- ios-Category补充
- (C++)跨平台日志库——yaolog v1.6
- 暑期集训之结构体重载