当前位置: 首页 > news >正文

房地产网站制作北京网站设计服务商

房地产网站制作,北京网站设计服务商,建设网站的目标和作用,搜索网站 模板1.引言 作为一名(坦白说有点懒的)图像处理方向的研究生,说实话最近新开一个坑,可能是因为要寒假了比较无聊,这次带来的系列是kaggle数据处理竞赛的经典例题:纽约出租车行程时间问题。希望大家多多支持&…

1.引言

作为一名(坦白说有点懒的)图像处理方向的研究生,说实话最近新开一个坑,可能是因为要寒假了比较无聊,这次带来的系列是kaggle数据处理竞赛的经典例题:纽约出租车行程时间问题。希望大家多多支持:)

1.1 问题背景

纽约充满了单行道、狭窄的街道,以及随时存在的无数行人。更不用说那些堵塞街道的汽车、摩托车和自行车了。再加上人们急于从A点赶到B点的情绪,结果就是你很可能会迟到,错过你需要准时参加的活动。

生活在像纽约这样的城市中,解决从A点到B点的问题(而不至于让自己抓狂)其实很简单:打车(或者使用Uber、Lyft等)。你不需要担心交通堵塞或行人问题,而且你还有时间做点别的事情,比如查看邮件。虽然听起来简单,但这并不意味着你一定能准时到达目的地。所以,你需要让司机走最短的路线。这里说的最短指时间最短。如果某条路线A比路线B长X公里,但能比路线B快Y分钟到达,那么你应该选择路线A。

要知道哪条路线是最佳路线,我们需要能够预测当选择某条路线时,行程会持续多长时间。因此,这场竞赛的目标是预测测试数据集中每个行程的持续时间,给定起始和结束坐标

1.2 使用的库与函数

在这个项目中,我们使用了 Python 3.6.1 和以下库来处理数据、构建模型和可视化结果:

  • Scikit-Learn:用于执行机器学习操作(如数据预处理、模型训练等)。
  • Pandas:用于数据操作和处理,方便加载、清洗和转换数据。
  • Numpy:Python中进行科学计算的基础包,支持高效的数值运算。
  • XGBoost:用于构建预测模型的梯度提升算法,常用于回归和分类任务。
  • Seaborn:基于Matplotlib构建的高级数据可视化工具,简化了绘图操作。
# 导入必需的库
import numpy as np                # 数值计算
import pandas as pd               # 数据处理
import seaborn as sns             # 数据可视化
import matplotlib.pyplot as plt    # 可视化
import xgboost as xgb             # XGBoost 模型
from sklearn.model_selection import train_test_split  # 数据划分
from sklearn.metrics import mean_squared_log_error    # RMSLE 计算
from sklearn.preprocessing import StandardScaler      # 标准化
from math import radians, cos, sin, asin, sqrt
import matplotlib
plt.rcParams['figure.figsize'] = [16, 10]

1.3 数据加载

train = pd.read_csv('new-york-city-taxi-with-osrm/train.csv')
test = pd.read_csv('new-york-city-taxi-with-osrm/test.csv')
X_train = train.drop(columns=['trip_duration'])
y_train = train['trip_duration']
X_test = test.drop(columns=['trip_duration'])
y_test = test['trip_duration']

2. 数据准备处理

2.1  Trip Duration Clean-up

# 设置显示样式
sns.set(style="whitegrid")
# 绘制 trip_duration 分布图(对数变换以更好显示分布)
plt.figure(figsize=(10, 6))
sns.histplot(train['trip_duration'], bins=100, kde=False, color='blue', log_scale=True)
plt.title('Distribution of Trip Duration (Log Scale)', fontsize=16)
plt.xlabel('Trip Duration (seconds, log scale)', fontsize=12)
plt.ylabel('Frequency', fontsize=12)
plt.show()

从上图中可以看到,trip_duration 变量存在一些异常值,例如,最大行程时长高达 980 小时,而最小行程时长仅为 1 秒。这些异常值可能会扭曲数据分布,并对模型性能产生负面影响。

清理方法:
决定排除超出平均值 2 个标准差范围的数据。这是因为,在正态分布的假设下,大多数数据(约 95%)应位于 2 个标准差范围内。此外,也可以尝试将范围扩大到 4 个标准差,观察其对最终结果的影响。
m = np.mean(train['trip_duration'])
s = np.std(train['trip_duration'])
train = train[train['trip_duration'] <= m + 2*s]
train = train[train['trip_duration'] >= m - 2*s]

2.2 Latitude and Longitude Clean-up

限制纽约市边界范围内的坐标点

纽约市的边界(以经纬度表示)为:

  • 经度范围:city_long_border = (-74.03, -73.75)
  • 纬度范围:city_lat_border = (40.63, 40.85)

通过与 train.describe() 的输出进行比较,可以发现某些坐标点(如 pickup_longitude, pickup_latitude, dropoff_longitude, dropoff_latitude)超出了这些边界范围。这些点可能是异常值或数据错误。

train = train[train['pickup_longitude'] <= -73.75]
train = train[train['pickup_longitude'] >= -74.03]
train = train[train['pickup_latitude'] <= 40.85]
train = train[train['pickup_latitude'] >= 40.63]
train = train[train['dropoff_longitude'] <= -73.75]
train = train[train['dropoff_longitude'] >= -74.03]
train = train[train['dropoff_latitude'] <= 40.85]
train = train[train['dropoff_latitude'] >= 40.63]

2.3 Passenger_Count Clean-up

异常值:0,7,8,9
由于test中也有异常值,不能直接删除,考虑用最近的值替代:0–>1,7、8、9–>6

train['passenger_count'] = train['passenger_count'].replace({0: 1, 7: 6, 8: 6, 9: 6})
test['passenger_count'] = test['passenger_count'].replace({0: 1, 7: 6, 8: 6, 9: 6})

2.4 Date Clean-up

在数据准备的最后一步,我们需要将日期变量(pickup_datetimedropoff_datetime)的格式转换为 datetime 类型。这一步将极大地简化后续的时间特征提取操作,例如:提取年、月、日、小时、分钟、星期、日期、其中加上“time”,用hour+minute/60,为了区分7:01与7:59;是否工作日、是否节假日 24小时切分为不同时段;早高峰、晚高峰、白天、夜晚 划分方式需要区分是否节假日,节假日没有早/晚高峰;

# 提取基本时间特征
train['year'] = train['pickup_datetime'].dt.year
train['month'] = train['pickup_datetime'].dt.month
train['day'] = train['pickup_datetime'].dt.day
train['hour'] = train['pickup_datetime'].dt.hour
train['minute'] = train['pickup_datetime'].dt.minute
train['weekday'] = train['pickup_datetime'].dt.weekday  # 0=Monday, 6=Sunday
train['date'] = train['pickup_datetime'].dt.date  # 仅日期部分
# 创建 time 特征 (hour + minute / 60)
train['time'] = train['hour'] + train['minute'] / 60
# 是否工作日 (0=周末, 1=工作日)
train['is_workday'] = train['weekday'].apply(lambda x: 1 if x < 5 else 0)
# 是否节假日
train['is_holiday'] = train['date'].apply(lambda x: 1 if x in holidays else 0)
# 时间段划分函数
def assign_time_period(hour, is_holiday):if is_holiday:  # 节假日if 7 <= hour < 21:return 'day'  # 白天else:return 'night'  # 夜晚else:  # 非节假日if 7 <= hour <= 9:return 'morning_rush'  # 早高峰elif 17 <= hour <= 21:return 'evening_rush'  # 晚高峰elif 9 < hour < 17:return 'daytime'  # 白天else:return 'night'  # 夜晚
# 应用时间段划分
train['time_period'] = train.apply(lambda row: assign_time_period(row['hour'], row['is_holiday']), axis=1)
# 查看结果
print(train[['year', 'month', 'day', 'hour', 'minute', 'weekday', 'time', 'is_workday', 'is_holiday', 'time_period']].head())

懒得更新了,明天继续吧

http://www.yayakq.cn/news/204952/

相关文章:

  • 常州建设局网站打不开六安网站制作费用
  • 自己做网站不想买空间 自己电脑可以做服务器吗?网站系统问题解决措施
  • 亳州市城乡建设局网站网站系统建设合同
  • 建设医院官方网站黑群晖做网站
  • 网站可以自己备案吗深圳百度开户
  • 微信网站响应式网站济南网站制作搜到
  • 网站设计公司业务怎么做在自己电脑上做网站
  • 佛山个人制作网站公司有哪些网站可以做网站游戏
  • 自己的服务器做网站要备案公司网页设计模板
  • php做的网站优缺点服务专业建设
  • 网站搜索栏建立wordpress加载变慢
  • 网站左下角广告代码中国建筑模板十大名牌
  • 烟台网站制作方案客户管理的常用软件有哪些
  • 星乐seo网站关键词排名优化网站支付可以做二清
  • 快速搭建网站模板点卡网站怎么做
  • wordpress中文问题seo快速排名案例
  • 网站建设架东莞企业网站推广公司
  • 石家庄网站设计网站建设设计师招募
  • 济南网站开发公司排名百度网站建设
  • 开发app和做网站wordpress 自己做主页
  • 安徽省建设干部培训学校网站网站空间是怎么开通的
  • 增城定制型网站建设开发软件学什么专业
  • 网站透明导航代码老薛主机做两个网站
  • 做推广网站公司区块链网站用vue.js做怎么样
  • 做网站 需要工信部备案吗ppt做视频模板下载网站
  • 学做网站论坛vip教程怎么做网站门户
  • 零基础网站建设教学在哪里宁波做网站的大公司
  • 网站开发技术技巧无锡网站制作咨询
  • 百度搜寻网站缩略图如何添加如何制作二维码的内容
  • 学校网站前置审批京津冀协同发展的基础