【譯】開啓數據科學之旅

做者: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%都會用到這三個庫,它們都有什麼做用呢?

  • Numpy:這個庫實現衆多數學函數運算,好比矩陣乘法、轉置等。
  • Pandas:很重要的庫,好比加載數據集、建立DataFrame對象,Pandas在分析和預測方面可以實現你想作的任何事情。
  • %matplotlib inline:寫上這句話,就能夠將製做的可視化圖像插入到Jupyter中。
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用於設置圖示的標題。

經過圖示,咱們可以從數據中獲得一些信息,能推論出如下各項嗎?

  • 年輕人更多在甲板上。
  • 老年人數量不多。
  • 22歲的最多。
  • 79歲的老人還去旅遊。

咱們經過圖示,可以推斷出的還不少。

固然,咱們也可以用這個數據集作其餘類型的統計圖。

數據中用二進制的方式標識了一我的是否獲救,這是咱們下面要研究的內容,經過統計模型進行預測。

讓咱們繼續,依靠前面的數據,用計算機來預測一個乘客是否能獲救。

機器學習算法

到目前,咱們已經完成了載入數據、數據可視化,以及如何根據數據進行推論,如今咱們要看看哪一個算法能夠用於預測。

在機器學習中,有兩類算法:

  • 有監督學習:若是數據中有標籤列,就可使用有監督學習,機器會查找跟數據匹配的標籤。
  • 無監督學習:沒有標籤時就要用無監督學習,機器會對數據進行聚類,並找到數據之間的關係。

有監督學習的典型例子是迴歸,而貝葉斯則是無監督學習的典型示例。

可是,對於本文中的數據,咱們打算用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迴歸,先要具有兩組數據:

  1. 訓練集:用於訓練模型
  2. 測試集:一般規模較小,用於檢驗機器學習模型

將性別轉化爲二級制形式以後,就可使用LogisticRegression模型預測輸出結果了。

首先,咱們將訓練集中的Survived列做爲Logistic迴歸模型的輸出。

爲此,已經將數據集劃分爲訓練集和測試集。

下面逐步來看看上面的過程:

  1. 將Survived列做爲標籤,即輸出。data_train是輸入的訓練數據,其中不包含Survived列。
  2. 而後引入sklean,並建立Logistic模型實例。
  3. 接下來訓練模型,計算機會努力找到一種模式,而後用這個模型對給定數據進行預測。
  4. 咱們已經獲得了一個被稱爲測試集的數據,它裏面沒有Survived列。下面利用訓練獲得的模型對這些數據進行預測。

以上就是計算機如何經過學習進行預測的過程,固然還有別的模型,之後有機會還要介紹對模型的評估方法,好比評估分數、矩陣分數等。

但願此文對你有啓發。「老齊教室」這個微信公衆號中還有不少數據科學、機器學習的文章,共學習者參考。

原文連接:towardsdatascience.com/how-to-begi…

搜索技術問答的公衆號:老齊教室

在公衆號中回覆:老齊,可查看全部文章、書籍、課程。

以爲好看,就點贊轉發/strong>

相關文章
相關標籤/搜索