訂閱
糾錯
加入自媒體

使用機器學習和深度學習模型預測汽車價格

目標

在本文中,我們將對二手車定價做出預測。我們將使用不同的架構開發(fā)多種機器學習和深度學習模型。最后,我們將比較機器學習模型與深度學習模型的性能。

使用的數(shù)據(jù)

在這種情況下,我們使用了 kaggle 數(shù)據(jù)集。

有 17 個不同的變量:

IDPrice: 汽車價格(目標欄)LevyManufacturerModelProd. yearCategoryLeather interiorFuel typeEngine volumeMileageCylindersGear box typeDrive wheelsDoorsWheelColorAirbags

要獲取數(shù)據(jù)并將其用于你的調(diào)查,請單擊以下鏈接 -

https://www.kaggle.com/datasets/deepcontractor/car-price-prediction-challenge

數(shù)據(jù)檢查

我們將在這部分查看數(shù)據(jù)。首先,讓我們看看數(shù)據(jù)中的列及其數(shù)據(jù)類型,以及任何缺失值。

數(shù)據(jù)集的信息

我們可以看到數(shù)據(jù)集有 19237 行 18 列。

有五個數(shù)字列和十三個類別列。我們可以立即觀察到數(shù)據(jù)中沒有缺失數(shù)字。

“Price”列/特征將是項目的目標列或相關特征。

讓我們看看數(shù)據(jù)分布。

數(shù)據(jù)準備

在這里,我們將清理數(shù)據(jù)并為模型訓練做準備。

“ID”列

我們刪除“ID”列,因為它與汽車價格預測無關。

Levy 列

檢查'Levy'列后,我們發(fā)現(xiàn)它確實包含缺失值,但它們在數(shù)據(jù)中表示為'-',這就是為什么我們無法在數(shù)據(jù)中更早地捕獲缺失值.

在這種情況下,如果沒有“Levy”,我們會將“Levy”列中的“-”替換為“0”。我們也可以用“均值”或“中值”來推斷它,但你必須做出該決定。

Mileage 列

這里的“Mileage”列表示汽車行駛了多少公里。每次閱讀后,“公里”都寫在列中。我們將刪除它。

**“Engine Volume”列 **

與“Engine Volume”列一起,還寫入了發(fā)動機的“種類”(渦輪增壓或非渦輪增壓)。我們將添加一個新列來顯示“引擎”的“類型”。

處理“離群值”

我們將檢查數(shù)值特征。以下是確定異常值的每個數(shù)值特征的快照

Levy:

Engine volume:

Mileage:

Cylinders:

Airbags:

離群值可以在 ‘Levy’, ‘Engine volume’, ‘Mileage’和“Cylinders”列中找到。我們將使用分位數(shù)間距 (IQR) 方法來消除這些異常值。

在統(tǒng)計學中,四分位數(shù)間距 (IQR) 是基于將數(shù)據(jù)集劃分為四分位數(shù)的可變性度量。IQR 是上四分位數(shù)和下四分位數(shù)之間的差值。它是一種不受異常值影響的穩(wěn)健的傳播度量。IQR 通常用于識別數(shù)據(jù)集中的異常值。

要計算 IQR,首先需要計算數(shù)據(jù)集的第 25 個和第 75 個百分位數(shù),然后通過從第 75 個百分位減去第 25 個百分位來計算 IQR。

使用 IQR 方法去除異常值后

我們可以觀察到現(xiàn)在特征中沒有異常值。

開發(fā)額外的特征

“Mileage”和“Engine Volume”都是連續(xù)變量。在運行回歸時,我發(fā)現(xiàn)對這些變量進行分箱有助于提高模型的性能。因此,我正在為這些特征/列開發(fā)“Bin”特征。

用于開發(fā)額外特征的代碼截圖

處理分類特征

處理機器學習中的分類特征是一項重要任務,因為大多數(shù)機器學習算法都是為處理數(shù)值數(shù)據(jù)而設計的。分類特征是表示為字符串的非數(shù)值數(shù)據(jù),例如顏色、國家或食物類型。為了在機器學習模型中使用這些特征,需要將它們轉化為數(shù)值數(shù)據(jù)。

有幾種方法可以處理 ML 中的分類特征。我使用 Ordinal Encoder 來處理分類列

檢查相關性

數(shù)據(jù)顯示,特征沒有高度關聯(lián)。然而,我們可以看到,在對“價格”列進行對數(shù)轉換后,與一些屬性的相關性上升了,這是一個積極的事情。我們將利用對數(shù)轉換的“價格”來訓練模型。

數(shù)據(jù)拆分和縮放

在數(shù)據(jù)上,我們將其分為 80-20。80% 的數(shù)據(jù)將用于訓練,其余 20% 將用于測試。

我們將另外縮放數(shù)據(jù),因為并非數(shù)據(jù)中的所有特征值都具有相同的比例,并且具有不同的比例可能會導致模型性能不佳。

模型搭建

作為機器學習模型,我們創(chuàng)建了 LinearRegression、XGBoost 和 RandomForest,以及兩種深度學習模型,一種是小網(wǎng)絡,另一種是大網(wǎng)絡。

我們開發(fā)了 LinearRegression、XGBoost 和 RandomForest 基礎模型,所以就不多說了,但是我們可以看到模型總結以及它們?nèi)绾闻c我們構建的深度學習模型收斂。

深度學習模型——小網(wǎng)絡模型總結

深度學習——小型網(wǎng)絡模型摘要快照

深度學習模型——小型網(wǎng)絡訓練和驗證損失

深度學習模型——大型網(wǎng)絡

深度學習大網(wǎng)絡模型總結

深度學習——大型網(wǎng)絡訓練和驗證損失

模型效率:

我們使用性能矩陣 Mean_Squared_Error、Mean_Absolute_Error、Mean_Absolute_Percentage_Error 和 Mean_Squared_Log_Error 評估模型,結果如下所示。

我們應用于數(shù)據(jù)集的所有模型的摘要

我們可以看到深度學習模型優(yōu)于機器學習模型。RandomForest 優(yōu)于所有機器學習模型。

結果

隨機森林模型的可視化

從圖中可以看出,模型的性能非常好,性能矩陣證明了這一點。

特征重要性

特征重要性是機器學習 (ML) 中的一個重要概念,因為它有助于識別數(shù)據(jù)集中最相關的特征以預測目標變量。它允許建模者了解每個特征在預測目標變量中的貢獻,并有助于識別對模型性能無用甚至有害的特征。

下面我們使用 SHAP 繪制了隨機森林模型的特征重要性:

所有變量的特征重要性快照

結論

在本文中,我們嘗試使用汽車數(shù)據(jù)中提供的眾多參數(shù)來預測汽車價格。我們構建了機器學習和深度學習模型來預測汽車價格,并發(fā)現(xiàn)基于機器學習的模型在這些數(shù)據(jù)上的表現(xiàn)優(yōu)于基于深度學習的模型。

筆記本參考和代碼:

https://colab.research.google.com/drive/1-ivt7AjvEXMXdglMn5AHlTAMfW5oKT3J#scrollTo=J-2Z03_7_8iq

參考文章:

https://www.obviously.ai/post/data-cleaning-in-machine-learning

https://shap.readthedocs.io/en/latest/index.html

       原文標題 : 使用機器學習和深度學習模型預測汽車價格

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號