邁出資料分析與機器學習的第一步【人工智慧工程師--AI轉型必修課】

CSDN學院發表於2020-04-04

資料分析太火爆,怎奈機器學習太難懂!隨著人工智慧的浪潮卷卷襲來,機器學習已經越來越火爆啦。資料分析與機器學習崗位可謂供不應求,但是入門的門檻也是蠻高的,究竟了機器學習太難學還是我們們木有挑選到趁手的兵器呢?今天我們們的任務就是嘗試用Python去開啟一場資料分析和機器學習建模之旅,用最簡單的方式帶大家邁出機器學習的第一步!機器學習:資料分析很好理解,就是挖掘出來我們需要的有價值。

機器學習:資料分析很好理解,就是挖掘出來我們需要的有價值的資訊,那麼機器學習又是什麼呢?剛接觸這個領域的同學可能有些迷茫,這個詞看起來蠻高階的,我就來通俗的解釋一下,機器學習也就是我們要讓機器(我們們的電腦)在歷史的資料中去學習到一些資料分佈的規則然後應用到新的資料中,這樣新的資料來了我們就可以做一系列任務啦,比如銀行根據歷史資料得出來什麼樣的人我會借給他多少錢,那麼一個新來的同學來借錢,銀行就會得出一個明確值,借給他多少錢!機器學習的應用已經涉及到我們生活中的各個角落啦,隨著人工智慧業的發展,相信機器學習的力量會使得我們生活的環境更上一層樓!

故事背景:今天要講的故事是我們們家喻戶曉的泰坦尼克號,那麼我們們是要來回顧一下jack和rose的經典動作嗎?這些只是我們們故事的開始,我們要做一件非常有意思的事情,去預測一下泰坦尼克號中,哪些成員能獲救。

挑選兵器:任務已經明確下達,接下來的目的就是挑選幾個合適的兵器去進行預測的工作啦,我們們的主線是使用Python,因為在資料分析與機器學習界Python已經成為一哥啦!首先介紹下我們們的兵器譜!

Numpy-科學計算庫 主要用來做矩陣運算,什麼?你不知道哪裡會用到矩陣,那麼這樣想吧,我們們的資料就是行(樣本)和列(特徵)組成的,那麼資料本身不就是一個矩陣嘛。
Pandas-資料分析處理庫 很多小夥伴都在說用python處理資料很容易,那麼容易在哪呢?其實有了pandas很複雜的操作我們也可以一行程式碼去解決掉!
Matplotlib-視覺化庫 無論是分析還是建模,光靠好記性可不行,很有必要把結果和過程視覺化的展示出來。
Scikit-Learn-機器學習庫 非常實用的機器學習演算法庫,這裡麵包含了基本你覺得你能用上所有機器學習演算法啦。但還遠不止如此,還有很多預處理和評估的模組等你來挖掘的!

資料簡介:拿上這些趁手的兵器,我們趕緊幹活吧,首先來看一下我們們的資料是長什麼樣子的!接下來我們就用這些武器來應對問題!

import pandas #ipython notebook
titanic = pandas.read_csv("titanic_train.csv")
titanic.head(5)

這裡寫圖片描述
Pandas首先登場,我們用它來進行資料處理和分析是灰常方便的,首先讀取了.csv檔案,又顯示了它的前5行資料。來簡單介紹一下資料中每一列都是什麼意思。

PassengerId:一個乘客的ID號,這對我們來說好像沒啥大用呢,獲不獲救跟ID貌似沒啥大關係,暫且不用它!
Survived:這個就很重要了,它就是我們們的標籤(LABEL)標誌著這個人到底是獲救了,還是沒獲救。
Pclass:乘客的船艙等級,是貴族還是平民呢?有3個船艙的等級。
Name:乘客的姓名,老外的名字真長啊~
Sex:只有二種~
Age:各個年齡段的都有的
SibSp:與該船員一起登船的兄弟姐妹個數
Parch:老人和孩子個數
Ticket:船票~貌似我們們用不上這個編碼
Fare:船票的價格,貴族票還是蠻貴的
Cabin:太多的缺失值了,直接給它pass掉不用了
Embarked:登船的碼頭,只有3個地點

titanic["Age"] = titanic["Age"].fillna(titanic["Age"].median())
print titanic.describe()

這裡寫圖片描述

觀察可以發現,對於Age這一列來說,只有714個值,而其他列都是891個值,這說明了什麼呢?粗大事了,有缺失值,那怎麼辦呢?這可以用很多種方法啦,用均值,眾數,中位數都可以進行填充嘛。在這裡我們使用中位數來對缺失值進行了填充。這個不是個別現象,對於一份真實的資料來說,缺失值是灰常常見的現象!

print titanic[“Sex”].unique()

# Replace all the occurences of male with the number 0. titanic.loc[titanic["Sex"] == "male", "Sex"] = 0 titanic.loc[titanic["Sex"] == "female", "Sex"] = 1 ['male' 'female']

再觀察一下資料,資料中很多列的屬性值都是字元型的,這對我們有什麼影響呢?我們們人類可以認識這些male和female但是計算機就不認識啦,它只認識數值,所以我們需要把字元值轉換成數值型別的。

from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
# Initialize our algorithm
alg = LogisticRegression(random_state=1)
# Compute the accuracy score for all the cross validation folds.  (much simpler than what we did before!)
scores = cross_validation.cross_val_score(alg, titanic[predictors], titanic["Survived"], cv=3)
# Take the mean of the scores (because we have one for each fold)
print(scores.mean())

核武器登場啦,使用scikit-learn可以輕鬆建議一個機器學習模型,這裡我們使用邏輯迴歸(經典的二分類)完成這個案例,首先還是先來介紹下邏輯迴歸是什麼吧!
這裡寫圖片描述
假設現在有兩個特徵,工資和年齡。我們要根據這兩個指標來預測一下銀行會借給這個人多少錢。那麼我們就可以建立出來這樣一個方程式!也就是說要找到最合適的一組引數使得我們最終預測的值和真實值越接近越好!但是我們現在要做的是一個分類任務呀!也就是說要得到一個類別值究竟是獲救了還是沒獲救,那麼還需要往下再走一步。
這裡寫圖片描述

這個函式可厲害了,我們來觀察一下,首先這個sigmoid函式的自變數取值範圍是負無窮到正無窮的,值域是在0到1區間上,那麼也就是說任何一個數值進入sigmoid函式之後都會得到一個(0,1)區間上的值,相當於是一個概率值了,那麼我們就可以設定這樣一個閾值。比如一個概率值>0.5我們把它當成1這個類別(獲救啦),概率值<0.5我們把它當成0這個類別(很遺憾~)。在木有調節任何引數的情況下精度已經接近百分之八十啦!

模型評估:剛才我們們說了一下模型的精度,也就是指預測的結果和真實值之間有多少個是一致的,然後除以樣本的總個數。精度可不是唯一的衡量標準,在機器學習的世界,我們有很多的標準,比如我們要進行一個檢測的任務,目的是檢測出所有病人中患癌症的是哪幾個,這回就不能只用精度了而要考慮最終的目標-檢測到癌症病人,這回可以使用召回率(RECALL)來完成這個任務,也就是檢測到癌症病人個數除以癌症病人總個數,並不去計算正常病人我有木有檢測到,因為這並不是我的目標!

特徵選擇:現在我們要好好想一想啦,我們最終的預測結果的準確程度和什麼有關呢?一方面是我們選擇的機器學習模型另一方面還有我們輸入的特徵資料呀,所以我們還得動動腦筋什麼樣的特徵更適合預測呢。腦洞大開時間到啦,這回我們把一個成員的家庭數量也統計了出來,就是兄弟姐妹+老人孩子,還有名字的長度(玄學)以及稱謂Mr,Miss,Master等。加入這些的目的就是讓我們的特徵更豐富一些,要想模型建立的好,特徵的選擇很關鍵,在起步階段我們需要儘可能多的提供有價值的特徵。

建立好模型還木有結束呀,對於一個分析任務來說,我們也需要知道這些特徵對最後的結果產生了怎樣的影響,例如是性別對結果影響比較大還是年齡呢?這回我們也可以通過預測的結果和真實值之間進行對比來分析一不同特徵的重要程度!下圖中可以分析得出不同特徵的重要程度的差異還是蠻大的,我們還可以進行取捨以及進一步分析啦!

使用Matplotlib來畫一個最簡單的條形圖,只需指定條形位置以及柱的高度即可,要進行視覺化展示我們得長和它打交道啦!

plt.bar(range(len(predictors)), scores)
plt.xticks(range(len(predictors)), predictors, rotation='vertical')
plt.show()

這裡寫圖片描述

這樣我們們完成了一個灰常簡單的預測任務,首先通過資料預處理把我們的資料做的純淨一些,然後把這些字元值轉換成機器認識的數值,接下來讓機器通過這批歷史資料去學習一下什麼樣的引數能夠最好的擬合我們們的資料,建立完模型後還需要不斷的反思如何調節引數能夠使得模型的效果更好以及給出一個合理的評估方法,最終輸出來一個預測結果就完成這個機器學習的任務啦!

機器學習30天系統掌握【升級】

講師介紹:
唐宇迪,計算機博士,專注於機器學習與計算機視覺領域,深度學習領域一線實戰專家,善於實現包括人臉識別,物體識別,關鍵點檢測等多種應用的最新演算法。參與多個國家級計算機視覺專案,多年資料領域培訓經驗,豐富的教學講解經驗,出品多套機器學習與深度學習系列課程,課程生動形象,風格通俗易懂。

課程介紹:
這將是你成為機器學習工程師的最佳實踐指南,通過30天實訓,層層遞進,徹底掌握機器學習!
知識系統性歸納+實時答疑+原始碼共享+案例實戰,五大模組的支撐,這才是從零入門的正確開啟方式!課程分為四個階段:基礎講解+演算法進階+案例實戰+行業應用。全程採用案例實戰,為快速與實際專案接軌打定基礎!
課程從機器學習經典演算法的數學原理推導與例項講解,通過原理分析,通俗解讀,案例實戰讓大家快速掌握機器學習經典演算法原理推導與工作流程,掌握Python資料分析與建模庫使用方法,從案例角度思考如何應用及其學習演算法解決實際問題。

目標人群:
1. 適合零基礎!對機器學習感興趣,或致力於從事人工智慧領域的開發者!
2. N+知識點+手把手掌握+原始碼共享+實時答疑,系統性學習與消化!
3. 全程案例實戰,從案例中學習,事半功倍!報名就贈:Python機器學習必備庫!全程金牌輔導!

課程特色:
專屬答疑+課件資料提供+視訊無限時回放+VIP交流群

開課時間:
隨到隨學,自由支配

點我試看: http://edu.csdn.net/course/detail/6108?utm_source=blog11

相關文章