GitHub 機器學習(Machine Learning) 100 天自學專案,內容強大學了保證一生平安!
GitHub 機器學習(Machine Learning) 100 天自學專案,內容強大學了保證一生平安!
News from: TechOrange
不少人下定決心在四個月內提升編程能力,但更多人半途就放棄。自學路上孤單、寂寞覺得冷時,在 GitHub 上有人發起接力挑戰百日編程計畫,號召一群勤奮向學的人響應活動。
你是想喝一輩子糖水,還是想用 AI 改變世界?但怎麼想是一回事,怎麼做往往是另一回事。學習和健身一樣,不少人都停留在口頭上,有各種藉口不曾付諸實施。為此,YouTube 網紅 Siraj Raval 發起了一個挑戰賽:#100DaysOfMLCode。
這個挑戰賽意在號召大家行動起來,從參與活動的那天起, 每天至少花費 1 小時的時間來學習提升或者應用編程,連續堅持 100 天,從而更好的理解和掌握機器學習這個強大的工具 。積跬步、至千里。
而且參加這個活動,還要使用#100DaysOfMLCode 這個標籤,在社交平台每日打卡,公開記錄自己的工作。
你想在這 100 天裡學到什麼,或者完成一個項目全憑自主決定。大家的選擇五花八門,其中有一個小哥的學習計劃,很快引發大家的關注。
這個小哥名叫 Avik Jain(重名的不少),他的百天計劃,是從機器學習的基礎概念起步,逐層遞進,內容比較適合初學者。這個 100 天搞定機器學習編程的項目,現在已經是爆紅 GitHub,很快累積了 3000 多標星,在 Twitter 上,也有一大票人熱捧這個項目。
同是百天計劃,這個有什麼特別之處?三點:
1、超讚的學習圖片
2、配套的代碼
3、相應的數據集
對這個項目的評價,多以 awesome、great、fantastic、outstanding、perfect 等評價,大家紛紛表示感謝(並祝樓主好人一生平安)。
項目地址在此:
請你一定收藏好。
目前作者的 100 天計劃,已經進行到第 25 天,已有的內容包括:
數據預處理、線性回歸、邏輯回歸、K 最鄰近算法、支持向量機、深度學習專項課程等,最新的內容已經講到決策樹及實現等。
量子位摘錄其中的部分內容,做個示例。
第一天
看上去,真是美好的一天
第一步:導入一些庫
Numpy 和 Pandas 這兩個,是非常重要的庫。
Numpy 裡面有各種數學函數,Pandas 是用來導入數據集、管理數據集的。
第二步:導入數據集 數據集通常是.csv 格式。 CSV 文件,是把表格數據,存儲成純文本。每一行是一個數據記錄 (Data Record) 。
在 Pandas 庫裡面,用 read_csv 的方法,來讀取本地的 CSV 文件,每個文件是一個數據幀 (Data Frame) 。
給每個數據幀裡的自變量和因變量,分別做矩陣和向量。
我們獲取的數據,通常是異構數據。導致缺失數據 (Missing Data) 的原因有很多,需要處理一下,模型的表現才不會減損。
可以把缺失的數據,用整列數據的平均值或者中位數代替。拿 sklearn.preprocessing 裡的 Imputer 來處理。
第四步:編碼分類數據 分類數據 (Categorical Data) 裡的變量,不包含數值,只包含分類標籤。
比如,是/否,性別,婚姻狀態,這樣的變量,是沒辦法當成數值直接運算的。
所以,才需要把它們編碼成能夠運算的數值。用 sklearn.preprocessing 裡面的 LabelEncoder 就可以了。
創建個虛擬變量:
第五步:分開訓練集和測試集 要把數據集分成兩半,一個當訓練集,另一個當測試集。
一般來說,可以按 80/20 這樣分,訓練集大一些。用 sklearn.crossvalidation 裡面的 train_test_split() 來分,就行了。
第六步:特徵縮放 大部分機器學習算法,都會拿兩個數據點之間的歐幾里得距離 (Euclidean Distance) 做計算。
這樣一來,如果一個特徵比其他特徵的範圍值更大,這個特徵值就會成為主導。
而我們希望其他特徵,也得到同等的重視,所以用特徵標準化 (Feature Standardization) 來解決這個問題。
sklearn.preprocessing 裡面的 StandardScalar,就派上用場了。
第二天

今天,要做的是簡單線性回歸 (Simple Linear Regression) 。

就是拿已知的那些 (x,y) 數據點,做出一條線性的趨勢,來預測其他 x 值,對應的 y。
第一步:數據預處理 其實,就是把第一天做過的事情,複習一下:
· 導入一些庫 。
· 導入數據集 。
· 處理缺失數據 。
· 把數據集分成訓練集和測試集。
· 特徵縮放的話,交給庫了。
· 導入數據集 。
· 處理缺失數據 。
· 把數據集分成訓練集和測試集。
· 特徵縮放的話,交給庫了。
第二步:擬合訓練集 要把數據集,擬合到簡單線性回歸模型裡面去,可以用 sklearn.linear_model 裡面的 LinearRegression 來解決。
在 LinearRegression 裡面,建一個叫做 regressor 的對象。
然後,把 regressor 擬合到數據集裡去,用 fit() 就行了。
第三步:預測結果 現在,用測試集來預測一下。
把輸出存到一個向量 Y_pred 裡面。然後,用 LinearRegression 裡面的預測方法,來支配上一步訓練過的 regressor。
第四步:可視化 最後一步,就是給預測結果做個可視化。
用 matplotlib.pyplot 做散點圖,給訓練集和測試集都做一下,看看預測結果是不是接近真實。
訓練集可視化:
1 plt.scatter(X_train , Y_train, plt.scatter(X_train , Y_train, colorcolor == ”redred”)
2 plt.plot(X_train , regressor.predict(X_train), ) plt.plot(X_train , regressor.p color =’blue’)
測試集可視化:
2 plt.plot(X_train , regressor.predict(X_train), ) plt.plot(X_train , regressor.p color =’blue’)
測試集可視化:
1 plt.scatter(X_test , Y_test, color = ‘red’)
2 plt.plot(X_test , regressor.predict(X_test), color =’blue’)
2 plt.plot(X_test , regressor.predict(X_test), color =’blue’)
兩件需要提醒的事

總之,大概就是上面這個樣子。部分已經放出的信息圖集合如下,大家可以預覽一下。
如果你也想入門或者提升自己的機器學習能力,不妨試試跟著這個小哥一起學習進步。雖然這個項目全是英文,但並不晦澀高深,說不定還能順便提高一下英文水平,以後讀 paper 也用得到~
如果你也想入門或者提升自己的機器學習能力,不妨試試跟著這個小哥一起學習進步。雖然這個項目全是英文,但並不晦澀高深,說不定還能順便提高一下英文水平,以後讀 paper 也用得到~
還有兩件事,需要提醒一下。
1、這個項目已經開始漢化了
@zhyongquan 在 GitHub 上已經開始嘗試中文版,效果如下圖所示。

不過目前只進行了第一天內容的漢化。如果你感興趣,可以持續關注,或者加入漢化的行動中。地址在此:
2、項目內容不能盲信
盡信書不如無書。這個學習項目,也不是百分百完全正確,比如第四天講邏輯回歸時的右下角配圖,就被指出存在錯誤。
作者也承諾將更新改正這個問題。就醬。
最後,再發一次這個項目的地址:
請你一定收藏好,如果能開始學習那就更好啦。如果這種偏入門的內容不適合你,還有更多進階或者俱體項目實現的 100 天計劃可供參考,希望能幫助你精進。
比方#100DaysOfMLCode 挑戰賽發起人 Siraj Raval,就選擇了在 100 天裡,使用機器學習技術,根據氣溫、降水、植被變化等因素,預測每週的登革熱疫情,改善防疫的研究計劃和資源分配。你也可以選擇其他項目,或者在 Twitter、GitHub 等看看別人的 100 天挑戰,有沒有你合適跟隨的,或者全新啟動你的挑戰。

















留言
張貼留言