目錄
- 背景
- 數(shù)據(jù)處理流程
- 數(shù)據(jù)清洗
- 數(shù)據(jù)預(yù)測
- 預(yù)測誤差值對比
- 源碼
背景
此次來源于公司的競賽項目,舉辦方給予了40天的二手車、每天1G左右的數(shù)據(jù),希望通過這40G左右的數(shù)據(jù)找出一些洞見,根據(jù)數(shù)據(jù)的分析,我主要集中在對二手車的出售價格的預(yù)估。本次采用python處理所有任務(wù)。
數(shù)據(jù)處理流程

具體流程可參考jupeter/pridict_step_by_step.ipynb,這是一個anaconda jupyter網(wǎng)頁編碼。如下圖:

數(shù)據(jù)清洗
對于這么一個量級的數(shù)據(jù)清洗,考慮性能,內(nèi)存占用等因素,通過python多進程,生成器來實現(xiàn)多個數(shù)據(jù)文件的讀取和清洗。在Mac book pro基本上可以達(dá)到每3秒可清洗一個文件。可以在后續(xù)源代碼部分clean/training_set.py找到這部分的代碼。包括處理異常數(shù)據(jù),去重等,清洗后可以得到如下圖數(shù)據(jù)表:

數(shù)據(jù)預(yù)測
如果需要有一輛二手車需要出售,我希望通過預(yù)測程序,能夠給一個初步的估價。下面我們來看看如何預(yù)測:
(1) 計算數(shù)據(jù)的相關(guān)性
通過pearson算法(數(shù)據(jù)約接近+/-1相關(guān)性越高,越接近0相關(guān)性越低)對數(shù)據(jù)進行相關(guān)性計算,我們可以得到如下列表:

從表中我們可以看出,一輛車的損耗率(出售價/新車價格)與使用年限和表里程有較高的相關(guān)性。
如果但就使用年限和損耗率的關(guān)系,我可以通過線性回歸得到如下圖:

從圖中我們可以看出,使用年限越長,車子的損耗越高,車子的出售價也就月底,當(dāng)然這跟我們感官理解比較接近,但實際情況是,我們一輛洗車可能在第一年的損耗率較高,可能達(dá)20%, 后面2,3,4年可能會有一個較平穩(wěn)的損耗率(可能在10%左右),當(dāng)然出現(xiàn)這個差別來源于很多方面,比如說汽車的品牌,汽車瑕疵的部位等等因素。
如果但考慮某一品牌,如benz,可得到下圖:

(2) TensorFlow 計算影響二手車價格各因素權(quán)重
在通過TensorFlow計算權(quán)重之前,進行了歸一化處理,以便能夠清晰的看出各權(quán)重的影響,另外我們在做權(quán)重計算時,并沒有加入品牌的因素,目前沒有對品牌的值進行訓(xùn)練。通過logistic回歸計算,可以得到如下圖:

(3) 預(yù)測二手車價格
如果給予一批二手車進行預(yù)測,我們可以得到如下一個預(yù)測誤差百分比:

從圖中可以看出只有半的二手車估計誤差在20%范圍內(nèi),由此我們看出品牌的引入,可能會提高我們的準(zhǔn)確性。