千家信息网

怎么使用Python和Jupyter Notebook构建预测模型

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"怎么使用Python和Jupyter Notebook构建预测模型",在日常操作中,相信很多人在怎么使用Python和Jupyter Notebook构建预测模型问题上存在疑惑,小编
千家信息网最后更新 2026年11月02日怎么使用Python和Jupyter Notebook构建预测模型

这篇文章主要介绍"怎么使用Python和Jupyter Notebook构建预测模型",在日常操作中,相信很多人在怎么使用Python和Jupyter Notebook构建预测模型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用Python和Jupyter Notebook构建预测模型"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

我在这个实验中使用的数据是来自Kaggle的酒店预订需求数据集

在本文中,我将只向你展示建模阶段,仅使用Logistic回归模型,但是你可以访问完整的文档,包括在Github上进行的数据清理、预处理和探索性数据分析。

导入库

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import confusion_matrixfrom sklearn.metrics import classification_reportimport warningswarnings.filterwarnings("ignore")

加载数据集

df = pd.read_csv('hotel_bookings.csv')df = df.iloc[0:2999]df.head()

下面是数据集的外观。

它有32列,它的完整版本是:

['hotel', 'is_canceled', 'lead_time', 'arrival_date_year',       'arrival_date_month', 'arrival_date_week_number',       'arrival_date_day_of_month', 'stays_in_weekend_nights',       'stays_in_week_nights', 'adults', 'children', 'babies', 'meal',       'country', 'market_segment', 'distribution_channel',       'is_repeated_guest', 'previous_cancellations',       'previous_bookings_not_canceled', 'reserved_room_type',       'assigned_room_type', 'booking_changes', 'deposit_type', 'agent',       'company', 'days_in_waiting_list', 'customer_type', 'adr',       'required_car_parking_spaces', 'total_of_special_requests',       'reservation_status', 'reservation_status_date']

根据我在Notebook上运行的信息,数据集中的NaN值可以在"country"、"agent"和"company"三列中找到

基于"lead_time"特征,我将"country"中的NaN值替换为PRT(葡萄牙),因为PRT是最常见的

我试图根据lead_time, arrival_date_month, 和arrival_date_week_number替换"agent"特征上的NaN值,但大多数都是"240"作为最常见的代理。

在我阅读了在互联网上可以找到的数据集的描述和解释后,作者将"agent"特征描述为"预订的旅行社ID"。因此,那些在数据集中拥有"agent"的人是唯一通过旅行社订购的人,而那些没有"agent"或是Nan的人,是那些没有通过旅行社订购的人。因此,我认为最好是用0来填充NaN值,而不是用常见的代理来填充它们,这样会使数据集与原始数据集有所不同。

最后但并非最不重要的是,我选择放弃整个"company"特征,因为该特性中的NaN约占数据的96%。如果我决定修改数据,它可能会对数据产生巨大的影响,并可能会影响整个数据

拆分数据集

df_new = df.copy()[['required_car_parking_spaces','lead_time','booking_changes','adr','adults', 'is_canceled']]df_new.head()
x = df_new.drop(['is_canceled'], axis=1)y = df_new['is_canceled']

我试着根据与目标(is_Cancelled)最显著相关的前5个特征对数据集进行拆分,它们是required_car_parking_spaces', 'lead_time', 'booking_changes', 'adr', 'adults,' 和'is_canceled.'

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, shuffle=False)

训练和测试分成80%和20%。

拟合模型

model_LogReg_Asli是在使用超参数调优之前使用Logistic回归的原始模型,下面是模型预测。

模型性能

如上所述,Logistic回归模型的准确率约为69.3%。

模型参数

Randomized Search CV的Logistic回归分析

model_LR_RS是采用Logistic回归和超参数调整(随机)的模型。

如上图所示,带有Randomized Search CV的Logistic回归模型的结果与没有随机搜索的结果完全相同,为69.3%。

基于网格搜索CV的Logistic回归

model_LR2_GS是采用Logistic回归和超参数调整(网格搜索)的模型。

上图显示,使用网格搜索CV的Logistic回归模型具有相同的准确率,为69.3%。

模型评估

混淆矩阵

TN为真反例,FN为假反例,FP为假正例,TP为真正例,0不被取消,1被取消。下面是模型的分类报告。

到此,关于"怎么使用Python和Jupyter Notebook构建预测模型"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

模型 数据 特征 参数 学习 搜索 常见 旅行社 网格 旅行 原始 相同 上图 准确率 更多 结果 代理 分析 帮助 影响 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 广州大一互联网络科技有限公司 互联网巨头科技公司 北京互联网科技公司 互联网女皇 腾讯科技 佩信高科技互联网 中国最先进互联网科技公司 茂名市互联网科技产业园 广州市恰铎互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 中科明德北京互联网科技 中国互联网有什么科技 中天科技中国工业互联网 东营紫格互联网科技 南京一网一红互联网科技有限公司 中国科技和美国互联网 亚光科技低轨卫星互联网 杭州科技互联网公司有哪些 恒生科技互联网指数十大成分股 知域互联网科技有限公司官网 中智农互联网科技 上海睿民互联网科技有限公司 互联网科技工作委员会 科技赋能互联网健康 科技互联网大厂 成都互联网科技公司工作好不好 马化腾互联网科技教学 黑龙江互联网科技公司 中国主要互联网科技公司 如何强化互联网金融科技
0