机器学习 Rider数据集分析和预测

news/2024/4/27 1:53:10/文章来源:https://blog.csdn.net/weixin_56260304/article/details/130275306

介绍数据集

ride_id:乘车ID
rideable_type:乘车类型
started_at:开始日期
ended_at :结束日期
start_station_name:开始站的名字
start_station_id:开始站的ID
end_station_name:结束站的名字
end_station_id :结束站的ID
start_lat:出发的维度
start_lng:出发的经度
end_lat:结束的维度
end_lng:结束的经度
member_casual:会员和非会员

实战演练

准备数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')#导入数据
df1 = pd.read_csv('C:/Rider/202101-divvy-tripdata/202101-divvy-tripdata.csv',engine='python')
df2 = pd.read_csv('C:/Rider/202102-divvy-tripdata/202102-divvy-tripdata.csv',engine='python')
df3 = pd.read_csv('C:/Rider/202103-divvy-tripdata/202103-divvy-tripdata.csv',engine='python')
df4 = pd.read_csv('C:/Rider/202004-divvy-tripdata/202004-divvy-tripdata.csv',engine='python')
df5 = pd.read_csv('C:/Rider/202005-divvy-tripdata/202005-divvy-tripdata.csv',engine='python')
df6 = pd.read_csv('C:/Rider/202006-divvy-tripdata/202006-divvy-tripdata.csv',engine='python')
df7 = pd.read_csv('C:/Rider/202007-divvy-tripdata/202007-divvy-tripdata.csv',engine='python')
df8 = pd.read_csv('C:/Rider/202008-divvy-tripdata/202008-divvy-tripdata.csv',engine='python')
df9 = pd.read_csv('C:/Rider/202009-divvy-tripdata/202009-divvy-tripdata.csv',engine='python')
df10 = pd.read_csv('C:/Rider/202010-divvy-tripdata/202010-divvy-tripdata.csv',engine='python')
df11 = pd.read_csv('C:/Rider/202011-divvy-tripdata/202011-divvy-tripdata.csv',engine='python')
df12 = pd.read_csv('C:/Rider/202012-divvy-tripdata/202012-divvy-tripdata.csv',engine='python')#将所有数据进行拼接成
df = pd.concat([df1,df2,df3,df4,df5,df6,df7,df8,df9,df10,df11,df12],axis=0)df.head()df.shape #(3489748, 13)

在这里插入图片描述

#检查数据是否有缺失值
pd.isnull(df).sum()
'''
ride_id                    0
rideable_type              0
started_at                 0
ended_at                   0
start_station_name    122175
start_station_id      122801
end_station_name      143242
end_station_id        143703
start_lat                  0
start_lng                  0
end_lat                 4738
end_lng                 4738
member_casual              0
dtype: int64
'''
# 对整张表格进行统计描述
df.describe()

在这里插入图片描述

start_station_name

#统计一共有多少种
df['start_station_name'].nunique()  #708# 统计每种有多少个
df['start_station_name'].value_counts()
'''
Streeter Dr & Grand Ave          35363
Clark St & Elm St                32472
Lake Shore Dr & Monroe St        29918
Theater on the Lake              29888
Lake Shore Dr & North Blvd       27126...  
N Hampden Ct & W Diversey Ave        1
Stewart Ave & 63rd St (*)            1
N Damen Ave & W Wabansia St          1
N Clark St & W Elm St                1
S Michigan Ave & E 118th St          1
Name: start_station_name, Length: 708, dtype: int64
'''# 对指定的列进行统计描述
df.start_station_name.describe()
'''
count                     3367573
unique                        708
top       Streeter Dr & Grand Ave
freq                        35363
Name: start_station_name, dtype: object
'''

end_station_name

#一共有多少种
df['end_station_name'].nunique()  #706# 统计每种有多少
df['end_station_name'].value_counts()
'''
Streeter Dr & Grand Ave          37425
Clark St & Elm St                32259
Theater on the Lake              31281
Lake Shore Dr & Monroe St        29280
Lake Shore Dr & North Blvd       27611...  
Avenue L & 114th St                  3
S Wentworth Ave & W 111th St         2
hubbard_test_lws                     2
Kedzie Ave & 110th St                2
N Hampden Ct & W Diversey Ave        1
Name: end_station_name, Length: 706, dtype: int64
'''df.end_station_name.describe()
'''
count                     3346506
unique                        706
top       Streeter Dr & Grand Ave
freq                        37425
Name: end_station_name, dtype: object
'''

将开始的日期转换为周

df['started_at'] = pd.DatetimeIndex(df['started_at'])
#去掉时分秒
df["started_at"] = df["started_at"].dt.date df['start_week']=pd.to_datetime(df['started_at'])
df['start_week'] = df['start_week'].dt.weekday

将开始的日期转换成月

df['start_months']=pd.to_datetime(df['started_at'])
df['start_months']=df['start_months'].dt.month

将开始的日期转换为周

df['ended_at'] = pd.DatetimeIndex(df['ended_at'])
#去掉时分秒
df["ended_at"] = df["ended_at"].dt.datedf['end_week']=pd.to_datetime(df['ended_at'])
df['end_week'] = df['end_week'].dt.weekday

将开始的日期转换成月

df['end_months']=pd.to_datetime(df['ended_at'])
df['end_months']=df['end_months'].dt.month

在这里插入图片描述

数据分析
#数据集各列的数据类型,是否为空值,内存占用情况
df.info()
'''
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3489748 entries, 0 to 131572
Data columns (total 17 columns):#   Column              Dtype  
---  ------              -----  0   ride_id             object 1   rideable_type       object 2   started_at          object 3   ended_at            object 4   start_station_name  object 5   start_station_id    object 6   end_station_name    object 7   end_station_id      object 8   start_lat           float649   start_lng           float6410  end_lat             float6411  end_lng             float6412  member_casual       object 13  start_week          int64  14  start_months        int64  15  end_week            int64  16  end_months          int64  
dtypes: float64(4), int64(4), object(9)
memory usage: 479.2+ MB
'''
#把类型进行分组
numerical_cols, categorical_cols = [], []for col in df.columns:if df[col].dtype=="int64":numerical_cols.append(col)elif df[col].dtype=="float64":numerical_cols.append(col)else:categorical_cols.append(col)n_numerical = len(numerical_cols)
n_categorical = len(categorical_cols)print("Total No. of Numerical Columns   : {}".format(n_numerical))
print("Total No. of Categorical Columns : {}".format(n_categorical))
'''
Total No. of Numerical Columns   : 8
Total No. of Categorical Columns : 9
'''
#去除一部分不太影响数据的列
df.drop(columns=['ride_id', 'started_at','ended_at','start_station_name','end_station_name'], inplace=True)
categorical_cols.remove('ride_id')
categorical_cols.remove('started_at')
categorical_cols.remove('ended_at')
categorical_cols.remove('start_station_name')
categorical_cols.remove('end_station_name')
df.head()

在这里插入图片描述

rideable_type

df[categorical_cols[0]].unique()
'''
array(['electric_bike', 'classic_bike', 'docked_bike'], dtype=object)
'''
#将字符型数据映射数字型数据
rideable_type_mapping= {'electric_bike':0.0, 'classic_bike':1.0,'docked_bike':2.0}
df[categorical_cols[0]] = df[categorical_cols[0]].map(rideable_type_mapping)df[categorical_cols[0]].unique()
'''
array([0., 1., 2.])
'''
#计算众数
mode = df.mode(axis=0)
mode
'''
rideable_type	start_station_id	end_station_id	start_lat	start_lng	end_lat	end_lng	member_casual	start_week  start_months	end_week	end_months
0	2.0	35	35.0	41.892278	-87.612043	41.892278	-87.612043	member	5	8	5	8
'''

start_station_id

start_id = int(mode[categorical_cols[1]])
print(start_id)#35#填补缺失值
df[categorical_cols[1]] = df[categorical_cols[1]].fillna(start_id,axis=0)
pd.isnull(df[categorical_cols[1]]).sum()#0

end_station_id

end_id = int(mode[categorical_cols[2]])
df[categorical_cols[2]] = df[categorical_cols[2]].fillna(start_id,axis=0)
pd.isnull(df[categorical_cols[2]]).sum()#0

end_lat

end_lat = float(mode[numerical_cols[2]])
df[numerical_cols[2]] = df[numerical_cols[2]].fillna(end_lat,axis=0)
pd.isnull(df[numerical_cols[2]]).sum()#0

end_lng

end_lng = float(mode[numerical_cols[3]])
df[numerical_cols[3]] = df[numerical_cols[3]].fillna(end_lat,axis=0)
pd.isnull(df[numerical_cols[3]]).sum()#0

member_casual

df[categorical_cols[3]].unique()
member_casual_mapping = {'member':0.0, 'casual':1.0}
df[categorical_cols[3]] = df[categorical_cols[3]].map(member_casual_mapping)
import plotly_express as px
rideable_type= pd.DataFrame(df.rideable_type.value_counts()).reset_index()
rideable_type.rename(columns = {'index':'rideable_type', 'rideable_type':'count'}, inplace=True)fig = px.pie(rideable_type, values = 'count', names='rideable_type', title = 'ride_type',hole=.3, color_discrete_map={'electric_bike':'lightcyan','classic_bike':'cyan','docked_bike':'royalblue'})
fig.show()

在这里插入图片描述

fig = px.histogram(df, x = 'start_station_id', title = 'start_station_id')
fig.show()

在这里插入图片描述

fig = px.histogram(df, x = 'end_station_id', title = 'end_station_id')
fig.show()

在这里插入图片描述

#类型转换
df[categorical_cols[2]] = pd.to_numeric(df[categorical_cols[2]],errors='coerce')
df[categorical_cols[1]] = pd.to_numeric(df[categorical_cols[1]],errors='coerce')
fig = px.pie(data_frame=df, names='member_casual', hole=0.2)
fig.update_layout({'title':{'text':"member_casual",'x':0.5}})
fig.show()

在这里插入图片描述

fig = px.pie(data_frame=df, names='start_week', hole=0.2)
fig.update_layout({'title':{'text':"start_week",'x':0.5}})
fig.show()

在这里插入图片描述

fig = px.pie(data_frame=df, names='end_week', hole=0.2)
fig.update_layout({'title':{'text':"end_week",'x':0.5}})
fig.show()

在这里插入图片描述

fig = px.pie(data_frame=df, names='start_months', hole=0.2)
fig.update_layout({'title':{'text':"start_months",'x':0.5}})
fig.show()

在这里插入图片描述

fig = px.pie(data_frame=df, names='end_months', hole=0.2)
fig.update_layout({'title':{'text':"end_months",'x':0.5}})
fig.show()

在这里插入图片描述

训练数据
import sklearn
from sklearn.preprocessing import StandardScalery_full = df.pop('member_casual')
X_full = dfscaler = StandardScaler()
X_scaled = scaler.fit_transform(X_full)X_train, X_valid, y_train, y_valid = train_test_split(X_scaled, y_full)
rfc = RandomForestRegressor()
rfc.fit(X_train, y_train)features = X_full.columns
feature_imps = rfc.feature_importances_#特征重要性fig = px.bar(x=features, y=feature_imps)
fig.update_layout({'title':{'text':"Feature Importnace", 'x':0.5}})
fig.show()

在这里插入图片描述

#线性回归模型
from sklearn.linear_model import LogisticRegressionlogreg = LogisticRegression(C=100,penalty="l2").fit(X_train,y_train)
print("模型train得分:{:.3f}".format(logreg.score(X_train,y_train)))
print("模型test得分:{:.3f}".format(logreg.score(X_valid,y_valid)))
'''
模型train得分:0.608
模型test得分:0.609
'''
pred = logreg.predict(X_valid)logreg_mse = mean_squared_error(y_valid, pred)
logreg_rmse = np.sqrt(logreg_mse)
logreg_r2 = r2_score(y_valid, pred)print(logreg_mse,logreg_rmse,logreg_r2)
'''
0.3913119228093261 0.6255492968658234 -0.6179405993775167
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102796.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网渗透之横向移动rdpwinrmwinrsspnkerberos

0x00 准备 环境&#xff1a;god.org cs上线 win2008web 提权利用ms14-058 抓取hash和明文密码(当获取到其他主机就重复提权和抓取密码) 扫描存活主机&#xff0c;扫描端口 代理转发-转发上线&#xff0c;生成反向连接木马&#xff0c;绑定监听器&#xff0c;上传至web根目录(方…

中小企业真的需要CRM吗?

如果你的企业没有CRM客户关系管理系统&#xff0c;企业主需要问问自己&#xff0c;他们将利用什么来扩展业务。福布斯进行的研究恰当地表明&#xff0c;充分利用CRM系统的企业可以将销售额提高29%。 中小企业定期产生大量客户&#xff0c;这可能会难以管理。这正是CRM系统在有…

《编码——隐藏在计算机软硬件背后的语言》精炼——第12章(二进制加法器)

“I hear and I forget. I see and I remember. I do and I understand”——Confucius 人类计算二进制数的方法 我们先计算本位的结果&#xff0c;称为加法位&#xff1b;再计算是否进位&#xff0c;称为进位位。 搭建二进制加法器 我们用逻辑门来搭建二进制加法器。它的思想…

高可用消息服务消息一致、可靠性、链路稳定性核心关注点

面临的问题 初期业务主要的场景是直播间的群聊消息以及一小部分的单聊消息。由于是教育场景&#xff0c;所以业务在划分聊天室的时候是以班级为单位进行划分的&#xff0c;假设每个聊天室的人数为500人。 问题一&#xff1a;用户的维护 直播场景的群聊与微信等常见的群聊在用…

OpenPCDet复现过程记录

0、前言 OpenPCDet项目之前我就复现过&#xff0c;一个很优秀的项目&#xff0c;这几天又需要用到这个项目&#xff0c;再次复现遇到了不少问题&#xff0c;特此记录复现的流程 1、环境准备 1.1、前置条件 以下是我安装的版本 CUDA 11.3CUDNN 8.2.1 CUDA和CUDNN安装可以参考…

61 openEuler 22.03-LTS 搭建MySQL数据库服务器-管理数据库用户

文章目录 61 openEuler 22.03-LTS 搭建MySQL数据库服务器-管理数据库用户61.1 创建用户示例 61.2 查看用户示例 61.3 修改用户61.3.1 修改用户名61.3.2 修改用户示例61.3.3 修改用户密码61.3.4 修改用户密码示例 61.4 删除用户示例 61.5 用户授权示例 61.6 删除用户权限示例 61…

c实例练习笔记(拓展)

本博文参考题目的地址看右边----》C技能树 我跟你说&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;c语言有bool类型&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;你是不是百度跟你说没有只有c才有&#xff1f; 是有的&#xff01;&#xf…

统计学 实验5

8.14 总体平均值&#xff08;μ&#xff09;&#xff1a;7.0 cm 总体方差&#xff08;σ&#xff09;&#xff1a;0.03 cm 样本平均值&#xff08;x̄&#xff09;&#xff1a;6.97 cm 样本方差&#xff08;s&#xff09;&#xff1a;0.0375 cm 样本大小&#xff08;n&#xff…

数百家数科公司齐聚用友BIP技术大会,共享企业数智化领先实践

4月19日&#xff5e;4月21日&#xff0c;由用友公司主办的“2023用友BIP技术大会“在用友产业园&#xff08;北京&#xff09;盛大召开&#xff0c;用友介绍了更懂企业业务的用友BIP-iuap平台&#xff0c;并发布了全面数智化能力体系&#xff0c;助力企业升级数智化底座&#x…

构建高效数据中台——数据只有被使用起来,才能创造价值

产品经理们时常会碰到这种问题&#xff1a; 我刚上线一个功能&#xff0c;请研发同志们帮我拉个数据出来分析&#xff0c;却被残酷告知需要排期。 我这里急得跺脚&#xff0c;但也只能理解。 数据研发们每天有查不完的数据和写不完的表&#xff0c;业务部门要的数据迟迟拿不到&…

CCBN 2023看点分析:国产8K摄像机国产化替代趋势增强

4月21日&#xff0c;为期3天的CCBN 2023&#xff08;第29届中国国际广播电视信息网络展览会&#xff09;在北京首钢会展中心圆满落幕&#xff0c;CCBN展会是亚洲广播电视设备展览会&#xff0c;也是中国广电行业规模最大、影响力最强的国际性展会之一&#xff0c;更是广电行业内…

同为科技(TOWE)防雷科普篇(二)——雷击灾害急救方法大全

前 言 当雷击发生时&#xff0c;空气中的各种微粒互相碰撞和摩擦便会使该空气介质两面的正负电荷的量持续积累&#xff0c;这时加于该空气介质的电压也会同时增加&#xff0c;当局部电压达到当时条件下空气的击穿电压时&#xff0c;该空气介质的局部便会发生电击穿而持续成为等…

23种设计模式-代理模式

代理模式 在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。 介绍 意图&#xff1a;为其他对象提供…

发展文旅夜游,活络城市文化生态

城市是一个对外的窗口&#xff0c;其夜间文化生态值得进一步挖掘&#xff0c;发展夜间文旅产业&#xff0c;并活络城市文化生态是重要的城市发展举措。实现这一目标需要保护和利用好城市夜景资源、挖掘城市夜生活文化内涵以及利用特色文化吸引夜游人流量。 第一、要保护和利用好…

ArcGIS、ENVI、InVEST、FRAGSTATS多技术融合提升环境、生态、水文、土地、土壤、农业、大气领域应用

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平 点击查看原文 一、空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 …

20、Theos越狱调试Wallet

前面的总结中使用砸壳重签后的App进行调试,本篇在越狱环境下不重签App进行调试,但是还是需要砸壳获取Headers. 一、Cycript 1.1 在越狱环境中使用Cycript 在越狱环境上,安装Cycript插件.需要先安装adv-cmds插件,因为被Cycript插件所依赖、在Cydia中,安装Cycript 在设备中找到…

苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像

苦熬10余年&#xff0c;国产操作系统自主研发 说到国内自主研发的操作系统&#xff0c;经验最丰富的品牌&#xff0c;当然是麒麟OS. 从诞生到发展&#xff0c;历经10多年的努力&#xff0c;麒麟os逐渐成为了国内自主研发操作系统领域中的一颗耀眼的明珠。麒麟OS不仅推出了许多…

typescript全局安装卸载以及npm相关问题

全局安装 npm install -g typescript 全局安装之后&#xff0c;如果想要卸载要使用 npm uninstall -g typescript 全局安装之后可以在终端使用 tsc xxx 编译ts文件 本地安装&#xff0c;也就是在项目目录下安装 npm install typescript 本地卸载 npm uninstall type…

DHCP 给内网客户端分配ip地址

~ 为 InsideCli 客户端网络分配地址&#xff0c;地址池范围&#xff1a; 192.168.0.110-192.168.0.190/24&#xff1b; ~ 域名解析服务器&#xff1a;按照实际需求配置 DNS 服务器地址选项&#xff1b; ~ 网关&#xff1a;按照实际需求配置网关地址选项&#xff1b; ~ 为…

基于Html+Css的图片展示25

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…