25行python代碼實現一個機器學習項目

python碼神 發佈 2020-01-23T15:07:32+00:00

今天,咱們就來學習一下,如何用25行python代碼,實現一個簡單的機器學習項目。運行結果python ML.pyaverage score: 0.6547085201793722模型性能說到性能,程式設計師們通常都會想到「cpu idle」,或者 「運行時間」,「內存占用」等。

一說起機器學習,同學們的第一反應一般是: 哇,機器學習這麼高大上的技術,一定很難吧。


說實話,機器學習的理論知識,對於非科班出身的同學們來說,確實就像是天書一樣,小編還記得以前硬啃西瓜書從入門到放棄的慘痛經歷。

但是,還好,我們有python這個強大的工具。有了python, 機器學習不再痛苦

今天, 咱們就來學習一下,如何用25行python代碼,實現一個簡單的機器學習項目。

python環境

python環境肯定是必須的啦, 推薦使用python3.x, 比如小編電腦上安裝的就是python3.7

為什麼不推薦python2呢, 因為, python官方宣布 2020 年 1 月後不再更新維護 Python2了。

機器學習lib包


python裡面有3個極其強大的機器學習lib包, 小編喜歡把他們稱作 」機器學習三劍客「:

1) numpy: 簡稱np, 主要用於矩陣計算。 聽到矩陣兩個字,是不是又感覺很難了, 不要急,這個機器學習項目不涉及矩陣計算~

2) pandas: 簡稱pd, 它是基於NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具和方法。 聽起來也挺複雜的,不過大家也不用擔心, 我們只是用它來讀取csv文件~

3) sklearn: 原文是scikit-learn (簡稱 sklearn) 它是基於 Python 語言的機器學習工具, 裡面有各種模型,各種工具,基本上都是幾行代碼就可以實現c++裡面極其複雜的功能,堪稱「神器「.

這幾個包的安裝,推薦是使用pip來安裝,網速不快的話,可以使用國內的源~, 具體方法本文就不再詳述了,百度一下有茫茫多的教程。

項目背景


在泰坦尼克沉船事故中, 有些乘客遇難,有些乘客則成功獲救。

訓練數據集中記錄了乘客的個人信息以及是否獲救,

我們需要根據這些數據嘗試訓練合適的模型,用於預測測試集中的乘客是否可以獲救。

這個問題本質上是一個二分類的問題。

數據集說明

數據集分為訓練集和測試集,欄位共有12個:

PassengerId, 乘客ID

Survived, 是否獲救

Pclass, 艙位等級

Name, 乘客名稱

Sex, 性別

Age, 年齡

SibSp, 兄弟姐妹個數

Parch, 父母小孩個數

Ticket, 船票文本信息

Fare, 票價

Cabin, 客艙

Embarked 登船港口

其中,Survived欄位就是我們要預測的欄位, 取值為0或者1。

下面看一段數據:

train.csv:

PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked

1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S

2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C

3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S

test.csv:


PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked

892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q

893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S

894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q

代碼解析

敲黑板,進入重點了,大家注意聽,讓我們來一行一行地解析這25行代碼。


運行結果

python ML.py

average score: 0.6547085201793722

模型性能

說到性能,程式設計師們通常都會想到「cpu idle」,或者 「運行時間」,「內存占用」等。 但是,對於一個機器學習項目, 其性能指的是準確率得分(accuracy_score), 得分越接近於1.0, 就認為模型的性能越好。

後記

通過上面的運行結果,我們知道這個25行代碼的決策樹模型的得分為0.65,距離1.0還比較遙遠。

但是,一個完整的機器學習項目已經實現了。

在以後的文章中,小編會繼續介紹如何優化這個模型的性能,提前透露一下,最終模型的得分可以達到0.97,是不是很棒。

關鍵字: