《Python数据科学手册》笔记

(因为没有下载到数据集,只能纸上谈兵的总结一下过程(o(╥﹏╥)o))

针对这个例子,首先要明确任务,细分目标;然后准备数据集并提取相应特征;最后选择模型进行训练与预测。另外,如果预测效果不好,还得认真分析原因。

一、明确目标,细分任务

首先要明确,我们的目的是预测自行车流量,而从经验来看,自行车流量可能与季节、天气、气温,是否为节假日,甚至白昼时间长短等因素有关系。因此我们可以探究自行车流量与以上因素的关系。不过,我们并没有现成的准备得妥妥当当的数据集,因此,我们还需要进行下一步:准备数据集。

二、准备数据集

首先需要一个自行车流量统计数据(日期+流量),季节、是否为节假日、白昼时间长短可通过自行车流量统计数据集的日期和pandas自带的日历模块进行转换求解,而天气和气温则需要再下载一个数据集。需要注意的是,自行车流量和天气、气温数据必须采自于同一个地方(城市),且日期要对齐。书上的案例下载了两个数据集:“每天经过美国西雅图弗莱蒙特桥上自行车的数量”数据集、“西雅图每日天气预报”数据集。

三、提取特征

1.首先加载两个数据集,用日期做索引,计算每一天的自行车流量,将结果放到一个新的DataFrame中。

2.考虑到自行车流量可能是按周变化(周中上班、周末不上班),因此将周一至周日单独成列。

3.根据日期计算当天是否为节假日,增加一列表示当天是否为节假日。

4.根据日期计算白昼时间,增加一列表示当天的白昼时间。

5.从天气预报数据集中可以计算每天的平均气温和总降雨量,特别地,再增加一个标记表示是否下雨,将这些特征都用新列表示。

四、选择模型进行训练及预测

选择线性回归模型,将整理好的训练集用模型进行训练,然后对不带标签(去除自行车流行列)的数据进行预测,对比自行车真实流量与预测流量。

五、根据结果对以上过程进行相应改善

结果是预测效果一般。那么,很有可能是因为特征没有收集全,还有其它因素会影响人们是否骑车:

①变量的非线性影响因素没有体现。降雨和寒冷天气的体现。

②非线性趋势没有体现。人们在温度过高或过低时可能都不愿意骑车。

③丢掉了一些细腻度的数据。下雨天的早晨和下雨天的傍晚直接的差异。

④忽略了相邻日期彼此间的相关性。下雨的星期二对星期三的骑车人数的影响或者滂沱大雨之后意外的雨过天晴对骑车人数的影响。

六、重要代码

1.加载数据集,用日期作索引:

counts = pd.read_csv('fremont_hourly.csv',index_col='Date',parse_dates=True) #自行车流量数据集
weather = pd.read_csv('599021.csv',index_col='DATE',parse_dates=True) #天气预报数据集

2.增加星期X列

days = ['Mon','Tue','Wed','Tue','Fri','Sat','Sun']
for i in range(7):daily[days[i]] = (daily.index.dayofweek == i).astype(float)

3.增加是否为节假日列

from pandas.tseries.holiday import USFederalHolidayCalendar
cal = USFederalHolidayCalendar()
holidays = cal.holidays('2012','2016') #数据集是2012~2016年之间的数据
daily = daily.join(pd.Series(1,index=holidays,name='holiday'))
daily['holiday'].fillna(0,inplace=True) #以0填充缺失值

4.增加白昼时间列

def hours_of_daylight(date,axis=23.44,latitude=47.61):days = (date - pd.datetime(2000,12,21)).daysm = (1. - np.tan(np.radians(latitude))*np.tan(np.radians(axis)*np.cos(days*2*np.pi/365.25)))return 24.*np.degrees(np.arccos(1-np.clip(m,0,2)))/180.
daily['daylight_hrs'] = list(map(hours_of_daylight,daily.index))

(剩下的特征列省略)

5.训练及预测

column_names = ['Mon','Tue','Wed','Tue','Fri','Sat','Sun','holiday','daylight_hrs','PRCP','dry day','Temp(C)','annual']
X = daily[column_names]
y = daily['Total']
from sklearn.linear_model import LinearRegression
model = LinearRegression(fit_intercept=False)
model.fit(X,y)
daily['predicted'] = model.predict(X)

机器学习案例:预测自行车流量——基于Scikit-Learn相关推荐

  1. python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别

    之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...

  2. 用Python搭建机器学习模型预测房租价格

    毫无疑问,机器学习是当前大数据分析中最热门的话题.这也是一些最令人兴奋的技术领域的基本概念,例如自动驾驶汽车和预测分析.百度上的机器学习搜索在2019年4月创历史新高,自此以来兴趣一直没有下降. 但是 ...

  3. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  4. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  5. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  6. 《机器学习与数据科学(基于R的统计学习方法)》——1.2 机器学习的实际案例...

    本节书摘来异步社区<机器学习与数据科学(基于R的统计学习方法)>一书中的第1章,第1.2节,作者:[美]Daniel D. Gutierrez(古铁雷斯),更多章节内容可以访问云栖社区&q ...

  7. 机器学习算法(七): 基于LightGBM的分类预测(基于英雄联盟10分钟数据判断红蓝方胜负)

    机器学习算法(七)基于LightGBM的分类预测 1. 实验室介绍 1.1 LightGBM的介绍 LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由20 ...

  8. 数据科学与机器学习案例之客户的信用风险与预测

    数据科学与机器学习案例之客户的信用风险与预测 项目来源 数据处理 机器学习算法 逻辑回归 所有特征 特征选择 glmnet svm 总结 项目来源 分享的项目是来源于暑期实习的一些心得,研究的问题是客 ...

  9. ML机器学习算法(一): 基于逻辑回归的分类预测

    机器学习算法(一): 基于逻辑回归的分类预测 1 逻辑回归的介绍和应用 1.1 逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个 ...

最新文章

  1. WINDOWS XP 开始→运行→命令 集锦
  2. JMeter脚本获取变量名、检验字符串值
  3. 每秒处理240万帧游戏画面,AI训练成本降低80%,谷歌开源RL并行计算框架
  4. Java实现上传文件到指定服务器指定目录
  5. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
  6. android 聊天功能实现,Android聊天背景功能实现
  7. 徐扬:互联网营销下的移动营销
  8. VS code gopls requires a module at the root of your workspace
  9. SIM800A模块发短信调试中出现的问题并解决
  10. 2017腾讯校招暑期实习生笔试题3
  11. 使用curl请求接口
  12. 小米为什么不怕iPhone降价?
  13. 俏兔子大战傻贼鹰(刚开始接触是写的,一直在草稿箱)
  14. shell获取当前系统时间
  15. Android输入法官方SoftKeyboard示例解析
  16. linux 程序开发
  17. 淘宝里面的data-spm-anchor-id属性有什么用?
  18. java中的键值对_java中单个键值对的表示方式
  19. java 按规则生成编码_填值规则(编码生成)
  20. 之前有研究过企业文化与洗脑之间的关系,对洗脑有一些了解,分享一下,可能不全面。

热门文章

  1. 如何做自己不想做的事情,却必须要去做的事情
  2. X64dbg脚本实现自动DUMP运行中解密出的PE文件
  3. c#控制台模拟dos_超好用的C#控制台应用模板
  4. Pointnet++中tf_ops三个.so文件的生成
  5. Java项目如何优雅的对接口入参进行校验-看法外狂徒张三浏览18网站失败
  6. sqlite3设置密码 password
  7. 启动jupyter notebook链接不上内核 + 终端报错:Replacing stale connection
  8. SLAM14讲学习笔记(一) 李群李代数基础
  9. C++ I/O文件读写操作
  10. c语言bb,bb平台,指针,c语言.doc