做者:Shreyas Raghavangit
翻譯:老齊算法
與本文相關的圖書推薦:《數據準備和特徵工程》編程
本書已經由電子工業出版社出版發行,購買地址:電子工業出版社天貓旗艦店bash
不是好久之前,商人們每每找占星家來預測下明年是否能掙錢,雖然這毫無根據,而且結果也不肯定,但若是聽專家的建議來爲本身的商業行爲做出決定,與此有什麼本質卻別?如今不一樣了,咱們正在變化,目前已經能夠基於事實和數字進行預測。微信
咱們生活在一個大數據的世界中,去Domino商店訂購披薩,他們首先要問你的手機號,經過該手機號,他們可以提取出你的住址、購買記錄等信息,可是是否僅限於列出這些數據? 仍是咱們能夠根據這些數據作些什麼?這就是數據科學家的職責了。markdown
如今,咱們就來探討一些分析數據的工具。機器學習
SAS,是「 Statistical Analysis System」的簡稱,能夠用於高級分析、數據管理、商業智能,它是NCSU(北卡羅來納州立大學)從1966年到1976年研發的許可軟件,如今仍然被普遍應用,特別是財富500強的公司都在應用。編程語言
R語言,是一種開源高級語言,提供了不少分析和統計的模塊,包含了不少開源庫,主要操做在命令行界面實現。函數
Python語言,我我的最喜歡了。Python是門革命性的語言,本文就要使用此語言。它是由吉多·範羅索姆(Guido Van Rossum)發明的一種高級編程語言,開源,天天都會有不少庫產生。若是你打算在機器學習、人工智能領域從業,Python是一門理想的編程語言。工具
如今,咱們就要來看看Python在數據科學中的應用。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
複製代碼
此處,咱們引入了三個基本的庫,你的項目大概有90%都會用到這三個庫,它們都有什麼做用呢?
train = pd.read_csv('train.csv') 複製代碼
以上,咱們載入了數據集,pd
是對pandas
的重命名(import pandas as pd
),read_csv
是pandas裏的一個函數,train.csv
是一個已經存在的文件。用上面的命令成功地在當前Python環境中加載了文件,從而建立了一個DataFrame對象。
train.head()
複製代碼
什麼是head?不是人體的頂部的嗎?Pandas用head
函數,是要給咱們呈現DataFrame對象中前面的若干條記錄,默認顯示前5條。
若是head(20)
就會返回前20條記錄,是否是頗有意思?
咱們也能夠用tail()
查看最後5條記錄(默認值是5)。
下面是head()
的輸出結果:
到如今,已經從DataFrame數據集中獲得了前5條記錄了。
接下來,重要的事情是你要了解所處理的數據集,好比大小、形狀和描述性統計,這些信息對咱們進一步處理數據都很是有用,也就是說,咱們必須瞭解數據集(注:《數據準備和特徵工程》一書中對此內容作了更詳細的闡述,請參考。)由於有少數數據集很大,處理它們纔是真正的痛苦工做,咱們須要從中找到有用的信息,並剔除不須要的內容,這聽起來彷佛很容易,但真正作起來,很是困難。
從輸出結果中能夠看到,咱們如今操做的數據有891行,12列,總共有10692個數據。
讓咱們再來看看基本的統計:
這裏呈現的統計數據,好比計數、平均值、百分位、標準差等,在咱們處理金融數據或者研究數據間關係是,都是很是重要的。
繼續,咱們要實施數據可視化,這是數據科學中最重要的技能,必須會。前面已經導入了matplotlib,這是數據可視化中應用很是普遍的庫,若是你去搜索,還會發現別的庫,但matplotlib是廣受歡迎的。
對於數據科學家而言,最重要的是知道用什麼方式進行表達,下面就討論這個問題,而後演示代碼。
進行數據可視化,必需要知道的幾件事:
這些會影響圖示的效果。
上面這張圖幫助咱們理清楚什麼時候用何種類型的可視化方式。
對於學習數據可視化而言,上面的圖示是具備高度參考價值的。不少公司都但願經過數據告訴咱們吸引人的故事。
可視化工具,好比Tableau、PowerBI等建立的儀表盤,可以告訴咱們數據中的故事。
如今,咱們要研究如何用matplotlib實現數據可視化:
前面已經引入了matplotlib,並命名別稱爲plt。從第一行開始,用參數figsize
設置了圖示的大小,一般,咱們可使用默認值。接下來,就回執年齡的圖示。
咱們可以設置標籤,xlable
意味着x軸,ylable
意味着y軸,titile
用於設置圖示的標題。
經過圖示,咱們可以從數據中獲得一些信息,能推論出如下各項嗎?
咱們經過圖示,可以推斷出的還不少。
固然,咱們也可以用這個數據集作其餘類型的統計圖。
數據中用二進制的方式標識了一我的是否獲救,這是咱們下面要研究的內容,經過統計模型進行預測。
讓咱們繼續,依靠前面的數據,用計算機來預測一個乘客是否能獲救。
到目前,咱們已經完成了載入數據、數據可視化,以及如何根據數據進行推論,如今咱們要看看哪一個算法能夠用於預測。
在機器學習中,有兩類算法:
有監督學習的典型例子是迴歸,而貝葉斯則是無監督學習的典型示例。
可是,對於本文中的數據,咱們打算用Logistic迴歸試試。具體怎麼作?
Logistic迴歸可以幫助咱們預測某數據的標籤是true仍是false。基本過程是用給定的數據輸入到機器中,而後機器用迴歸模型進行計算,最後告訴咱們一個二進制形式的結果。
根據維基百科,Logistic迴歸,或者logit迴歸、logit模型,是一種迴歸模型,它的因變量是分類型的。本文中的因變量用二級制形式表示,即只取兩個數,「0」或者「1」,這種二進制方式能夠表明不一樣的輸出結果,好比經過/掛科、贏/輸、生/死,或者健康/生病等。若是因變量是超過兩個值得分類數據,能夠用多元Logistic迴歸。若是多個類型值是有順序的,能夠用序數Logistic迴歸。在經濟領域,Logisti迴歸是一種反應定性問題或者離散問題的模型示例。
那麼,Logistic迴歸在這裏對咱們有什麼用?
咱們已經有用二進制形式表示獲救狀況的列,這已不是問題。可是,咱們須要將性別(gender)列的值修改成1和0,這樣咱們就能依靠性別預測一我的是否獲救。
須要導入sklearn庫,sklearn很是強大,它不只僅是統計工具。
按照下面的操做:
from sklearn.linear_model import LogisticRegression
複製代碼
從sklearn庫中引入Logistic迴歸模塊。
爲了使用Logistic迴歸,先要具有兩組數據:
將性別轉化爲二級制形式以後,就可使用LogisticRegression
模型預測輸出結果了。
首先,咱們將訓練集中的Survived列做爲Logistic迴歸模型的輸出。
爲此,已經將數據集劃分爲訓練集和測試集。
下面逐步來看看上面的過程:
以上就是計算機如何經過學習進行預測的過程,固然還有別的模型,之後有機會還要介紹對模型的評估方法,好比評估分數、矩陣分數等。
但願此文對你有啓發。「老齊教室」這個微信公衆號中還有不少數據科學、機器學習的文章,共學習者參考。
原文連接:towardsdatascience.com/how-to-begi…
搜索技術問答的公衆號:老齊教室
在公衆號中回覆:老齊,可查看全部文章、書籍、課程。
以爲好看,就點贊轉發/strong>