溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

發(fā)布時間:2021-12-27 13:56:16 來源:億速云 閱讀:896 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“怎么使用Python和Jupyter Notebook構(gòu)建預測模型”,在日常操作中,相信很多人在怎么使用Python和Jupyter Notebook構(gòu)建預測模型問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Python和Jupyter Notebook構(gòu)建預測模型”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

我在這個實驗中使用的數(shù)據(jù)是來自Kaggle的酒店預訂需求數(shù)據(jù)集

在本文中,我將只向你展示建模階段,僅使用Logistic回歸模型,但是你可以訪問完整的文檔,包括在Github上進行的數(shù)據(jù)清理、預處理和探索性數(shù)據(jù)分析。

導入庫

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

import warnings
warnings.filterwarnings("ignore")

加載數(shù)據(jù)集

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

下面是數(shù)據(jù)集的外觀。

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

它有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']

根據(jù)我在Notebook上運行的信息,數(shù)據(jù)集中的NaN值可以在“country”、“agent”和“company”三列中找到

基于“l(fā)ead_time”特征,我將“country”中的NaN值替換為PRT(葡萄牙),因為PRT是最常見的

我試圖根據(jù)lead_time, arrival_date_month, 和arrival_date_week_number替換“agent”特征上的NaN值,但大多數(shù)都是“240”作為最常見的代理。

在我閱讀了在互聯(lián)網(wǎng)上可以找到的數(shù)據(jù)集的描述和解釋后,作者將“agent”特征描述為“預訂的旅行社ID”。因此,那些在數(shù)據(jù)集中擁有“agent”的人是唯一通過旅行社訂購的人,而那些沒有“agent”或是Nan的人,是那些沒有通過旅行社訂購的人。因此,我認為最好是用0來填充NaN值,而不是用常見的代理來填充它們,這樣會使數(shù)據(jù)集與原始數(shù)據(jù)集有所不同。

最后但并非最不重要的是,我選擇放棄整個“company”特征,因為該特性中的NaN約占數(shù)據(jù)的96%。如果我決定修改數(shù)據(jù),它可能會對數(shù)據(jù)產(chǎn)生巨大的影響,并可能會影響整個數(shù)據(jù)

拆分數(shù)據(jù)集

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']

我試著根據(jù)與目標(is_Cancelled)最顯著相關(guān)的前5個特征對數(shù)據(jù)集進行拆分,它們是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%。

擬合模型

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

model_LogReg_Asli是在使用超參數(shù)調(diào)優(yōu)之前使用Logistic回歸的原始模型,下面是模型預測。

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

模型性能

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

如上所述,Logistic回歸模型的準確率約為69.3%。

模型參數(shù)

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

Randomized Search CV的Logistic回歸分析

model_LR_RS是采用Logistic回歸和超參數(shù)調(diào)整(隨機)的模型。

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

如上圖所示,帶有Randomized Search CV的Logistic回歸模型的結(jié)果與沒有隨機搜索的結(jié)果完全相同,為69.3%。

基于網(wǎng)格搜索CV的Logistic回歸

model_LR2_GS是采用Logistic回歸和超參數(shù)調(diào)整(網(wǎng)格搜索)的模型。

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

上圖顯示,使用網(wǎng)格搜索CV的Logistic回歸模型具有相同的準確率,為69.3%。

模型評估

混淆矩陣

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

TN為真反例,F(xiàn)N為假反例,F(xiàn)P為假正例,TP為真正例,0不被取消,1被取消。下面是模型的分類報告。

怎么使用Python和Jupyter Notebook構(gòu)建預測模型

到此,關(guān)于“怎么使用Python和Jupyter Notebook構(gòu)建預測模型”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI