Python基于決策樹分類模型坝初、隨機森林分類模型、KNN分類模型和GBDT分類模型完成收入預測項目實戰(zhàn)

?說明:這是一個機器學習實戰(zhàn)項目(附帶數(shù)據(jù)+代碼+文檔+代碼講解)钾军,如需數(shù)據(jù)+代碼+文檔+代碼講解可以直接到文章最后獲取鳄袍。

1.項目背景 ?

在全球化的今天,收入不平等已經(jīng)成為各國政府和社會關注的焦點問題之一吏恭。了解居民收入狀況拗小,特別是區(qū)分收入水平是否超過一定閾值(如5萬美元),對于政策制定者樱哼、社會學家和經(jīng)濟學家而言至關重要哀九。這不僅有助于揭示社會經(jīng)濟結(jié)構的現(xiàn)狀,而且對于制定針對性的社會保障政策搅幅、稅收政策以及經(jīng)濟發(fā)展戰(zhàn)略具有深遠影響阅束。

隨著大數(shù)據(jù)和機器學習技術的迅猛發(fā)展,我們擁有了前所未有的工具來分析和預測復雜的經(jīng)濟現(xiàn)象茄唐。利用居民的年齡息裸,工作類型,受教育程度等多維度數(shù)據(jù)沪编,構建預測模型呼盆,能夠幫助我們更準確地預測個體的收入水平。特別是在美國這樣的經(jīng)濟體中蚁廓,能否達到5萬美元的年收入往往被視為中產(chǎn)階級的門檻访圃,對個人的生活質(zhì)量、消費模式乃至社會流動性有著顯著影響纳令。

本項目致力于開發(fā)基于機器學習的居民收入預測模型挽荠,主要聚焦于預測個體年收入是否超過5萬美元。我們的目標是:

通過實施本項目平绩,我們期望能夠為理解和解決收入不平等問題提供有力的技術支撐圈匆。預測模型的建立不僅可以幫助政府和相關機構提前規(guī)劃,還能夠為個人的職業(yè)規(guī)劃和財務決策提供參考捏雌,促進社會的整體福祉跃赚。此外,項目成果還將豐富學術界對收入預測領域的研究,為后續(xù)的理論創(chuàng)新和應用開發(fā)奠定堅實的基礎纬傲。

本項目通過決策樹分類模型满败、隨機森林分類模型、KNN分類模型和GBDT分類模型完成收入預測叹括。?????? ? ?

2.數(shù)據(jù)獲取?

本次建模數(shù)據(jù)來源于網(wǎng)絡(本項目撰寫人整理而成)算墨,數(shù)據(jù)項統(tǒng)計如下:

數(shù)據(jù)詳情如下(部分展示): ? ?

3.數(shù)據(jù)預處理 ?

3.1 用Pandas工具查看數(shù)據(jù)?

使用Pandas工具的head()方法查看前五行數(shù)據(jù):

關鍵代碼:

3.2數(shù)據(jù)缺失查看?

使用Pandas工具的info()方法查看數(shù)據(jù)信息: ? ?

從上圖可以看到,總共有15個變量汁雷,數(shù)據(jù)中有缺失值净嘀,工作類型缺失值1836條、國籍缺失值583條侠讯,共有32561條數(shù)據(jù)挖藏。 ? ?

關鍵代碼:

3.3數(shù)據(jù)描述性統(tǒng)計 ?

通過Pandas工具的describe()方法來查看數(shù)據(jù)的平均值、標準差厢漩、最小值膜眠、分位數(shù)、最大值溜嗜。

關鍵代碼如下:?

4.探索性數(shù)據(jù)分析 ?

4.1 income變量柱狀圖 ?

用Matplotlib工具的plot()方法繪制柱狀圖: ? ?

4.2 特征密度分布圖?

通過上圖可以看出宵膨,在不同收入水平下,年齡的核密度分布圖炸宵,對于年收入超過5萬美元的居民來說柄驻,他們的年齡幾乎呈現(xiàn)正態(tài)分布,而收入低于5萬美元的居民焙压,年齡呈現(xiàn)右偏特征,即年齡偏大的居民人數(shù)要比年齡偏小的人數(shù)多抑钟。 ? ?

通過上圖可以看出涯曲,不同收入水平下,周工作小時數(shù)的核密度圖在塔,很明顯幻件,兩者的分布趨勢非常相似,并且出現(xiàn)局部峰值蛔溃。

通過上圖可以看出绰沥,不同收入水平下,教育時長的核密度圖贺待,很明顯徽曲,兩者的分布趨勢非常相似,并且也多次出現(xiàn)局部峰值麸塞。? ??

4.3 特征柱狀圖 ?

通過上圖可以看出秃臣,相同的種族下,居民年收入水平高低的人數(shù)差異。

通過上圖可以看出奥此,相同的家庭成員關系下弧哎,居民年收入水平高低的人數(shù)差異。但無論怎么比較稚虎,都發(fā)現(xiàn)一個規(guī)律撤嫩,即在某一個相同的水平下(如白種人或未結(jié)婚人群中),年收入低于5萬美元的人數(shù)都要比年收入高于5萬美元的人數(shù)多蠢终,這個應該是抽樣導致的差異(數(shù)據(jù)集中年收入低于5萬和高于5萬的居民比例大致在75%:25%)序攘。 ? ?

通過上圖可以看出,相同的性別下蜕径,居民收入水平高低人數(shù)的差異两踏;其中,女性收入低于5萬美元的人數(shù)比高于5萬美元人數(shù)的差異比男性更嚴重兜喻,比例大致為90%:10%梦染, 男性大致為70%:30%。

5.特征工程 ?

5.1離散變量重編碼 ?

如下是編碼后的結(jié)果展示: ? ?

5.2 啞特征處理?

關鍵代碼如下:

5.3 建立特征數(shù)據(jù)和標簽數(shù)據(jù)?

關鍵代碼如下:

5.4 數(shù)據(jù)均衡化?

采用過采樣工具進行數(shù)據(jù)均衡化朴皆,結(jié)果如下: ? ?

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

通過train_test_split()方法按照80%訓練集帕识、20%測試集進行劃分,關鍵代碼如下:

6.構建分類模型?

主要使用決策樹分類算法遂铡、隨機森林分類算法肮疗、KNN分類算法和GBDT分類算法,用于目標分類扒接。?

6.1 構建模型?

7.模型評估 ?

7.1評估指標及結(jié)果 ?

評估指標主要包括準確率伪货、查準率、查全率钾怔、F1分值等等碱呼。

從上表可以看出,4個模型的F1分值都在0.8以上宗侦,說明4個模型在月亮數(shù)據(jù)集上效果良好愚臀,其中隨機森林表現(xiàn)最好。????

7.2 分類報告?

決策樹分類模型:

從上圖可以看出矾利,分類為0的F1分值為0.87姑裂;分類為1的F1分值為0.87。

隨機森林分類模型:

從上圖可以看出男旗,分類為0的F1分值為0.89舶斧;分類為1的F1分值為0.89。

KNN分類模型:

從上圖可以看出察皇,分類為0的F1分值為0.84捧毛;分類為1的F1分值為0.87。

GBDT分類模型:

從上圖可以看出,分類為0的F1分值為0.86呀忧;分類為1的F1分值為0.87师痕。

7.3 混淆矩陣?

決策樹分類模型: ? ?

從上圖可以看出,實際為0預測不為0的 有727個樣本而账;實際為1預測不為1的 有578個樣本胰坟。??? ??

隨機森林分類模型: ? ?

從上圖可以看出,實際為0預測不為0的 有577個樣本泞辐;實際為1預測不為1的 有486個樣本笔横。

KNN分類模型: ? ?

從上圖可以看出,實際為0預測不為0的 有1191個樣本咐吼;實際為1預測不為1的 有248個樣本吹缔。

GBDT分類模型: ? ?

從上圖可以看出,實際為0預測不為0的 有846個樣本锯茄;實際為1預測不為1的 有497個樣本厢塘。

7.4 ROC曲線?

決策樹分類模型: ? ?

從上圖可以看出,決策樹分類模型的AUC值為0.88肌幽。

隨機森林分類模型: ? ?

從上圖可以看出晚碾,隨機森林分類模型的AUC值為0.96。

KNN分類模型: ? ?

從上圖可以看出喂急,KNN分類模型的AUC值為0.92格嘁。

GBDT分類模型: ? ?

從上圖可以看出,GBDT分類模型的AUC值為0.94廊移。? ? ??

8.結(jié)論與展望?

綜上所述糕簿,本文采用了決策樹、狡孔、隨機森林冶伞、KNN和GBDT算法來構建分類模型,最終證明了4種模型效果良好步氏。此模型可用于日常產(chǎn)品的預測。? ??

說明:進入作者個人主頁徒爹,可以查看更多文章內(nèi)容荚醒,點擊作者頭像,可進入作者個人主頁隆嗅。

項目代碼:

plt.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題

# kind='bar' 繪制柱狀圖

df['income'].value_counts().plot(kind='bar') # 繪圖

plt.xlabel("income變量") # 設置x軸名稱

plt.ylabel("數(shù)量") # 設置y軸名稱

plt.title('income變量柱狀圖') # 設置標題名稱

# 項目資源如下:

#? ? https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2

df.age[df.income == ' <=50K'].plot(kind='kde', label='<=50K', legend=True, linestyle='-') # 繪圖

df.age[df.income == ' >50K'].plot(kind='kde', label='>50K', legend=True, linestyle='--') # 繪圖

plt.xlabel("age") # 設置x軸名稱

df['hours-per-week'][df.income == ' <=50K'].plot(kind='kde', label='<=50K', legend=True, linestyle='-') # 繪圖

df['education-num'][df.income == ' <=50K'].plot(kind='kde', label='<=50K', legend=True, linestyle='-') # 繪圖

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末界阁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胖喳,更是在濱河造成了極大的恐慌泡躯,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異较剃,居然都是意外死亡咕别,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門写穴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惰拱,“玉大人,你說我怎么就攤上這事啊送〕ザ蹋” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵馋没,是天一觀的道長昔逗。 經(jīng)常有香客問我,道長篷朵,這世上最難降的妖魔是什么勾怒? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮款票,結(jié)果婚禮上控硼,老公的妹妹穿的比我還像新娘。我一直安慰自己艾少,他們只是感情好卡乾,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缚够,像睡著了一般幔妨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谍椅,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天误堡,我揣著相機與錄音,去河邊找鬼雏吭。 笑死锁施,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的杖们。 我是一名探鬼主播悉抵,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摘完!你這毒婦竟也來了姥饰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤孝治,失蹤者是張志新(化名)和其女友劉穎列粪,沒想到半個月后审磁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡岂座,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年态蒂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掺逼。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡吃媒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吕喘,到底是詐尸還是另有隱情赘那,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布氯质,位于F島的核電站募舟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闻察。R本人自食惡果不足惜拱礁,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辕漂。 院中可真熱鬧呢灶,春花似錦、人聲如沸钉嘹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跋涣。三九已至缨睡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陈辱,已是汗流浹背奖年。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沛贪,地道東北人陋守。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像利赋,于是被迫代替她去往敵國和親水评。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容