利用人口普查的收入資料來選一個好學校!

人工智慧頻道發表於2018-10-22

作者:Sayon Bhattacharjee

我小時候經常搬家。出於這個原因,我的父母一直在考慮居住在適合的社群。有幾個因素影響了這個決定,但對於為我上學而擔心的父母來說有一個主導因素:那是就找到一所好學校。

利用人口普查的收入資料來選一個好學校!


弗雷澤研究所是一家加拿大研究和教育機構,每年釋出加拿大學校的評級。這些評級基於安大略省標準化評估(EQAO)的平均表現。

在這個資料科學專案中,我們將根據收入、地點、學校董事會,以及學校是小學還是中學來分析多倫多的學校表現資料。在此之後,我們將看看是否可以透過這些函式預測2017年給予學校的評級。

獲取學校評級資料

為了獲得安大略學校的評級,我們可以下載弗雷澤研究所釋出的PDF,然後將相關頁面複製並貼上到文字檔案中,這樣我們就可以使用python逐行掃描。小學和中學以單獨的PDF格式提供,因此我們最終得到兩個文字檔案,其中共有3810所學校:

利用人口普查的收入資料來選一個好學校!


第一行顯示學校名稱,學校所在的城市以及測試的學生人數。與我們最相關的最後一行顯示了10分的學校評分。

我們可以將此資訊與多倫多資料目錄中的學校位置資料庫相關聯。資料庫為我們提供了以下資訊:

  • 學校名稱

  • 學校董事會(天主教、公立或私立)

  • 位置(地址、緯度、經度和市政)

  • 政府特定識別符號

使用Python,我們可以編寫一個指令碼來解析這個文字檔案,提取評級並將這些評級作為列新增到多倫多學校資料庫中。這樣做只是將正規表示式應用於正確的行。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


我們首先檢視檔案,找到有方括號的行(唯一帶方括號的行是帶有學校名稱和城市資訊的行)。接下來,我們檢查城市是否在多倫多,如果是,就儲存學校的名稱。在程式碼的第二部分,我們檢查單詞"Overall"(僅出現在最後一行)並提取評分。使用我們從文字檔案中記錄的學校名稱,我們使用"NAME"列將其與多倫多學校資料庫進行匹配。由於小學和中學儲存在兩個文字檔案中,我們也可以將其新增為一個函式。最後,我們新增5列代表每年的評級。

獲取收入資料

可以從CensusMapper的API輕鬆下載分類的人口普查資料,告訴我們一個地區的家庭收入中位數。但是,人口普查位置資料按傳播區域(DA)排序。要將傳播區域(DA)轉換為地理位置,我們可以下載StatsCan提供的檔案,該檔案告訴我們加拿大每個傳播區域的中心緯度和經度。

在將兩個檔案與pandas合併並在多倫多收集傳播區域(DA)之後,我們現在有一個3676個傳播區域的表格,它們按緯度和經度的位置以及它們的家庭收入中位數。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


為了將收入資訊與評級資訊聯絡起來,我們可以找到與每所學校距離最小的傳播區域(DA),並假設這是該社群的中位數收入。

為此,我們可以使用庫GeoPy(pip install geopy)來查詢vincenty距離(球體表面上兩點之間的距離)。

利用人口普查的收入資料來選一個好學校!


將這些收入新增到學校位置資料框後,我們現在擁有完整的資料。

利用人口普查的收入資料來選一個好學校!


資料視覺化

首先,我們可以使用庫gmplot(pip install gmplot)製作一個包含每所學校位置的散點圖。

利用人口普查的收入資料來選一個好學校!


該圖表顯示,多倫多中部和東北部的學校評級較高(較淺的點數較高)。透過查閱CensusMapper提供的收入熱圖,我們可以看到它可能存在相關性。

利用人口普查的收入資料來選一個好學校!


讓我們來看看多倫多給出的評級分佈。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


資料大致呈正態分佈,平均值為6.35,標準差為1.73。 由於我們有小學和中學資料,讓我們看看兩種型別之間的區別。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


在這裡,我們看到小學通常被評為高於中學。

同樣,也可以繪製每個學校董事會的評級方框圖。  

利用人口普查的收入資料來選一個好學校!


每個城市的評級似乎都相似,我們可以測試這種差異後來是否具有統計學意義。

為了正確地將學校評級設想為社群年薪中位數的函式,我們應該將收入每2萬美元放入間隔中。

利用人口普查的收入資料來選一個好學校!


製作資料的方框圖:

利用人口普查的收入資料來選一個好學校!


該圖顯示,社群的收入中位數與離該社群最近的學校的評級之間存在某種相關性

統計學意義

即使我們在視覺上看到上面的方框圖中的差異,但這還不足以證明這種差異不僅僅是偶然的。我們必須證明這種差異具有統計意義。為了找到統計學顯著性,我們可以進行單向ANOVA。透過ANOVA,我們陳述了零假設,即來自類別的樣本來自具有相同均值的群體。例如,對於學校董事會專欄,我們假設μ_catholic=μ_public=μ_private。另一種假設是樣本來自具有不同手段的群體,因此受其所屬群體的影響。

每列的ANOVA給出的p值遠低於0.05,因此我們可以說這些差異具有統計學意義。我們拒絕每個列的零假設,即群體的群體具有相同的均值。

特徵工程

我們可以使用迴歸技術來檢視是否可以使用我們建立的功能預測學校的評級。但是,在我們將特徵放入模型之前,必須填充缺失值,並且所有特徵必須是熱編碼的。為了處理缺失值,我們將所有缺失值替換為已收集的評級的平均值。我們應該確保不包括2017年的評級,因為這是我們試圖預測的價值。我們可以在迴圈前面的文字檔案時填充缺失的值。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


此函式採用5個等級的列表,並將所有'n / a'的等級轉換為np.nan,以便我們可以應用np.nanmean()來查詢均值。然後我們檢查前4個評級是否缺失,如果它們是,那麼我們返回缺少值的列表(我們將稍後刪除這些行,因為它們很少)。最後,我們找到2013-2016年之間的平均評級,並返回一個沒有缺失值的新評級列表。

對每個分類值進行熱編碼,我們可以使用pd.get_dummies()將每個分類值轉換為多個列。每列的值可能為0或1,具體取決於資料點是否屬於該類別的一部分。

利用人口普查的收入資料來選一個好學校!


具有重新命名列的新資料框如下所示。

利用人口普查的收入資料來選一個好學校!


既然已經填充了所有缺失值並且分類列是一個熱編碼的,現在讓我們繪製Pearson相關矩陣以找到我們應該使用的特徵。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


對相關矩陣進行排序,並且顏色對稱地繪製為0,因此我們可以看到0.19的相關性與-0.19一樣重要。正如所假設的那樣,每年的學校評級與其他年份的評級密切相關,而收入和私立學校的評級與評級有些相關。

預測

首先,我們必須建立指標來評估我們的模型是否有效。當我們測量回歸效能時,我們將使用平均絕對誤差和均方根誤差。為了衡量我們的機器學習模型是否值得付出努力,我們將建立一個基線。例如,如果我們每次都預測平均值,並且實現比任何機器學習模型更低的均方誤差/平均絕對誤差,那麼我們的模型實際上將是無用的。如果我們每次只預測平均評分(6.35),這裡有指標。

利用人口普查的收入資料來選一個好學校!


現在我們可以設定我們用來預測2017年給出的評級的模型!要檢視2017年評級是否可以預測,如果沒有前幾年的資訊,我們將使用學校型別、學校董事會、市政和收入功能。下面是隨機森林、梯度增強、線性迴歸和支援向量機的設定程式碼,其中省略了一個交叉驗證。

利用人口普查的收入資料來選一個好學校!


利用人口普查的收入資料來選一個好學校!


我們可以看到線性迴歸良好,平均絕對誤差為1.22,均方根誤差為1.5255。這並不是糟糕的表現,因為這意味著我們的預測平均在真實值的1.22點內,比我們每次預測平均值時的0.16點或12%更好。

為了獲得更多資訊,讓我們看看前幾年的資訊有哪些錯誤。

利用人口普查的收入資料來選一個好學校!


這次SVM和線性迴歸效果最好,平均絕對誤差為0.72,比我們每次預測平均值時的0.76點或48%要好!

結論

在本文中,我們彙總了多倫多的資料目錄,StatsCan和Fraser Institute的資料。在將資料轉換為可用形式之後,它被用於視覺化學校評級中的10分與各種特徵(如學校董事會)和中位數社群收入之間的相關性。結果發現存在相關性,並且可以使用此資訊預測學校的平均評分為±1.22分。

這些資料可以定性眾所周知的事實:貧困可以預測許多特徵,而教育是非常重要的。

後續步驟可能涉及:

  • 將其他城市納入資料

  • 使用學校僱用的教師的資訊

  • 獲取收入以外的家庭人口統計資料,瞭解它如何影響學校的表現


來自 “ Medium ”,原文連結:http://blog.itpub.net/31545819/viewspace-2217084/,如需轉載,請註明出處,否則將追究法律責任。

相關文章