数据与特征对随机森林的影响

带着上节提出的问题,重新读取规模更大的数据,任务还是保持不变,需要分别观察数据量和特征的选寸结果的影响。

导入工具包

import pandas as pd

读取数据

features = pd.read_csv('data/temps_extended.csv')
features

新的数据中,数据规模发生了变化,数据量扩充到了2191条并且加入了新的天气指标:

ws_1:前一天的风速
prcp_1: 前一天的降水
snwd_1:前一天的积雪深度
既然有了新的特征,先来看看他们长什么样吧,同样的方式绘制就可以了:

# 转换成标准格式
import datetime# 得到各种日期数据
years = features['year']
months = features['month']
days = features['day']# 格式转换
dates = [str(int(year)) + '-' + str(int(month)) + '-' + str(int(day)) for year, month, day in zip(years, months, days)]
dates = [datetime.datetime.strptime(date, '%Y-%m-%d') for date in dates]# 绘图
import matplotlib.pyplot as plt%matplotlib inline# 风格设置
plt.style.use('fivethirtyeight')
# Set up the plotting layout
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize = (15,10))
fig.autofmt_xdate(rotation = 45)# Actual max temperature measurement
ax1.plot(dates, features['actual'])
ax1.set_xlabel(''); ax1.set_ylabel('Temperature (F)'); ax1.set_title('Max Temp')# Temperature from 1 day ago
ax2.plot(dates, features['temp_1'])
ax2.set_xlabel(''); ax2.set_ylabel('Temperature (F)'); ax2.set_title('Prior Max Temp')# Temperature from 2 days ago
ax3.plot(dates, features['temp_2'])
ax3.set_xlabel('Date'); ax3.set_ylabel('Temperature (F)'); ax3.set_title('Two Days Prior Max Temp')# Friend Estimate
ax4.plot(dates, features['friend'])
ax4.set_xlabel('Date'); ax4.set_ylabel('Temperature (F)'); ax4.set_title('Friend Estimate')plt.tight_layout(pad=2)

# 设置整体布局
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize = (15,10))
fig.autofmt_xdate(rotation = 45)# 平均最高气温
ax1.plot(dates, features['average'])
ax1.set_xlabel(''); ax1.set_ylabel('Temperature (F)'); ax1.set_title('Historical Avg Max Temp')# 风速
ax2.plot(dates, features['ws_1'], 'r-')
ax2.set_xlabel(''); ax2.set_ylabel('Wind Speed (mph)'); ax2.set_title('Prior Wind Speed')# 降水
ax3.plot(dates, features['prcp_1'], 'r-')
ax3.set_xlabel('Date'); ax3.set_ylabel('Precipitation (in)'); ax3.set_title('Prior Precipitation')# 积雪
ax4.plot(dates, features['snwd_1'], 'ro')
ax4.set_xlabel('Date'); ax4.set_ylabel('Snow Depth (in)'); ax4.set_title('Prior Snow Depth')plt.tight_layout(pad=2)


加入3项新的特征,看起来很好理解,可视化展示的目的一方面是观察特征情况,另一方面还需考虑其数值是否存在问题,因为通常拿到的数据并不是这么干净的,当然这个例子的数据还是非常友好的,直接使用即可。

特征工程

在数据分析和特征提取的过程中,出发点都是尽可能多地选择有价值的特征,因为初始阶段能得到的信息越多,建模时可以利用的信息也越多。

随着大家做机器学习项目的深入,就会发现一个现象∶建模之后,又想到一些可以利用的数据特征,再回过头来进行数据的预处理和体征提取,然后重新进行建模分析。

反复提取特征后,最常做的就是进行实验对比,但是如果数据量非常大,进行一次特征提取花费的时间就相对较多,所以,建议大家在开始阶段尽可能地完善预处理与特征提取工作,也可以多制定几套方案进行对比分析

例如,在这份数据中有完整的日期特征,显然天气的变换与季节因素有关,但是,在原始数据集中,并没有体现出季节特征的指标,此时可以自己创建一个季节变量,将之当作新的特征,无论对建模还是分析都会起到帮助作用。

# 创建一个季节变量
seasons = []for month in features['month']:if month in [1, 2, 12]:seasons.append('winter')elif month in [3, 4, 5]:seasons.append('spring')elif month in [6, 7, 8]:seasons.append('summer')elif month in [9, 10, 11]:seasons.append('fall')# 有了季节我们就可以分析更多东西了
reduced_features = features[['temp_1', 'prcp_1', 'average', 'actual']]
reduced_features['season'] = seasons

有了季节特征之后,假如我想观察一下不同季节的时候上述各项指标的变换情况该怎么做呢?这里给大家推荐一个非常实用的绘图函数pairplot,需要我们先安装seaborn这个工具包,它相当于是在Matplotlib的基础上进行封装,说白了就是用起来更简单规范了:

# 导入seaborn工具包
import seaborn as sns
sns.set(style="ticks", color_codes=True);# 选择你喜欢的颜色模板
palette = sns.xkcd_palette(['dark blue', 'dark green', 'gold', 'orange'])# 绘制pairplot
sns.pairplot(reduced_features, hue = 'season', diag_kind = 'kde', palette= palette, plot_kws=dict(alpha = 0.7),diag_kws=dict(shade=True));


上述输出结果显示,r轴和,轴都是temp_1、prep_1、average、actual这4项指标,不同颜色的点表示不同的季节(通过hue参数来设置),在主对角线上r轴和,轴都是用相同特征表示其在不同季节时的数值分布情况,其他位置用散点图来表示两个特征之间的关系,例如左下角 temp_1和 actual 就呈现出很强的相关性。

大数据预测实战-随机森林预测实战(三)-数据与特征对模型的影响相关推荐

  1. 大数据预测实战-随机森林预测实战(四)-模型微调

    接下来介绍下一位参赛选手--GridSearchCV(),它要做的事情就跟其名字一样,进行网络搜索,也就是一个一个地遍历,不能放过任何一个可能的参数组合.就像之前说的组合有多少种,就全部走一遍,使用方 ...

  2. 大数据预测实战-随机森林预测实战(一)-数据预处理

    数据读取 气温预测的任务目标就是使用一份天气相关数据来预测某一天的最高温度,属于回归任务,首先观察一下数据集∶ # 数据读取 import pandas as pdfeatures = pd.read ...

  3. 大数据预测实战-随机森林预测实战(四)-模型调参

    之前对比分析的主要是数据和特征层面,还有另一部分非常重要的工作等着大家去做,就是模型调参问题,在实验的最后,看一下对于树模型来说,应当如何进行参数调节. 调参是机器学习必经的一步,很多方法和经验并不是 ...

  4. 大数据预测实战-随机森林预测实战(三)-数据量对结果影响分析

    下面对比一下特征数量对结果的影响,之前两次比较没有加入新的天气特征,这次把降水.风速.积雪 3 项特征加入数据集中,看看效果怎样∶ # 准备加入新的特征 from sklearn.ensemble i ...

  5. 基于大尺度结构的随机森林预测与I类HLA结合的稳定肽

    点击下载https://www.frontiersin.org/articles/10.3389/fimmu.2020.01583/full 1.Abstract HLA I类亲和力预测的稳定肽是设计 ...

  6. 的garch预测_随机森林预测

    当涉及到预测数据(时间序列或其他类型的序列)时,人们会关注基本回归.ARIMA.ARMA.GARCH,甚至Prophet,但不排除使用随机森林来预测数据. 随机森林通常被认为是一种分类技术,但回归问题 ...

  7. python数据项目分析实战技法_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(1/2)...

    第9章--随机森林项目实战--气温预测(1/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其中涉及多个模块,主要包含随机森林建模.特征选择. ...

  8. python天气数据分析论文_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(2/2)...

    第9章--随机森林项目实战--气温预测(2/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其中涉及多个模块,主要包含随机森林建模.特征选择. ...

  9. 机器学习sklearn实战-----随机森林调参乳腺癌分类预测

    机器学习sklearn随机森林乳腺癌分类预测 机器学习中调参的基本思想: 1)非常正确的调参思路和方法 2)对模型评估指标有深入理解 3)对数据的感觉和经验 文章目录 机器学习sklearn随机森林乳 ...

最新文章

  1. 在ASP.NET 2.0中建立站点导航层次
  2. 超级智能的定义,一个已经诞生并不断深刻影响人类的新智能
  3. C/C++函数形参传实参时值传递、指针传递、引用传递的区别
  4. 盘点selenium phantomJS使用的坑
  5. macbookpro合盖后掉电_macbookpro外接显示器,主机盖还是不盖?
  6. canvas 红包雨_天猫双十一怎么买省钱?京东双十一红包口令淘宝双十一活动攻略...
  7. Qt Creator设置Nimble
  8. mysql是哪五个字符集_MySQL中涉及的几个字符集
  9. java实现泛型检索_高级Java泛型:检索泛型类型参数
  10. 计算机应用基础形考作业3Excel部分,计算机应用基础形考3,Excel部分
  11. 抖音联合九大博物馆推出“云游”活动 网友可在家看展
  12. 程序人生--一个程序员对学弟学妹建议
  13. spring 事务源码(三)如何保证被@Transactional标记方法中的所有sql都在一个事务内
  14. python简明教程_07
  15. 大数据简历(项目部分)
  16. 快速从入门到精通!黑马java课程大纲
  17. Leetcode︱448. Find All Numbers Disappeared in an Array找到所有数组中消失的数字.java
  18. diy服务器组装,服务器装机 DIY
  19. Node-RED中建立Websocket客户端连接
  20. 「HDU 2298」Toxophily

热门文章

  1. java 504错误怎么解决_求助java.lang.NoClassDefFoundError怎么解决,报错信息如下
  2. 如何给影像添加投影_如何在EasyEarth Desktop(CS客户端)进行影像处理
  3. html5 can,基于html5 can-vas实现漫天飞雪效果实例
  4. java回调函数 final_java中带回调函数的字符串替换,类似js中的replace(rgExp,function)...
  5. Java对象转换成Map
  6. SQL基础:数据表的创建
  7. UVa 816 (BFS求最短路)
  8. 《LeetBook》leetcode题解(5):Longest Palindromic [M]——回文串判断
  9. HTML基础 DOM概览(第一天)
  10. JavaScript大杂烩17 - 性能优化