一做个、數(shù)據(jù)科學(xué)
原文:Data Science
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
什么是數(shù)據(jù)科學(xué)
數(shù)據(jù)科學(xué)是通過探索炼幔,預(yù)測(cè)和推斷秋茫,從大量不同的數(shù)據(jù)集中得出有用的結(jié)論。探索涉及識(shí)別信息中的規(guī)律乃秀。預(yù)測(cè)涉及使用我們所知道的信息肛著,對(duì)我們希望知道的值作出知情的猜測(cè)圆兵。推斷涉及量化我們的確定程度:我們發(fā)現(xiàn)的這些規(guī)律是否也出現(xiàn)在新的觀察中?我們的預(yù)測(cè)有多準(zhǔn)確枢贿?我們用于探索的主要工具是可視化和描述性統(tǒng)計(jì)殉农,用于預(yù)測(cè)的是機(jī)器學(xué)習(xí)和優(yōu)化,用于推理的是統(tǒng)計(jì)測(cè)試和模型局荚。
統(tǒng)計(jì)學(xué)是數(shù)據(jù)科學(xué)的核心部分超凳,因?yàn)榻y(tǒng)計(jì)學(xué)研究,如何用不完整的信息做出有力的結(jié)論耀态。計(jì)算是一個(gè)重要組成部分轮傍,因?yàn)榫幊淘试S我們將分析技巧應(yīng)用于大量不同的數(shù)據(jù)集,它們?cè)谡鎸?shí)應(yīng)用中出現(xiàn):不僅包括數(shù)字茫陆,還包括文本金麸,圖像,視頻和傳感器讀數(shù)簿盅。數(shù)據(jù)科學(xué)就是所有這些東西挥下,但是由于應(yīng)用的原因,它不僅僅是其部分的總和桨醋。通過理解一個(gè)特定的領(lǐng)域棚瘟,數(shù)據(jù)科學(xué)家學(xué)習(xí)提出有關(guān)他們的數(shù)據(jù)的適當(dāng)?shù)膯栴},并正確地解釋我們的推理和計(jì)算工具提供的答案喜最。
簡介
數(shù)據(jù)是對(duì)我們周圍世界的描述偎蘸,通過觀察來收集并存儲(chǔ)在計(jì)算機(jī)上。計(jì)算機(jī)使我們能夠從這些描述中推斷出世界的特性瞬内。數(shù)據(jù)科學(xué)是使用計(jì)算從數(shù)據(jù)中得出結(jié)論的學(xué)科迷雪。有效的數(shù)據(jù)分析有三個(gè)核心方面:探索,預(yù)測(cè)和推理虫蝶。本文對(duì)三者進(jìn)行了一致的研究章咧,同時(shí)介紹了統(tǒng)計(jì)思想和計(jì)算機(jī)科學(xué)的基本思想。我們專注于一套最小的核心技巧能真,應(yīng)用于廣泛的實(shí)際應(yīng)用赁严。數(shù)據(jù)科學(xué)的基礎(chǔ)不僅需要理解統(tǒng)計(jì)和計(jì)算技巧,還需要認(rèn)識(shí)到它們?nèi)绾螒?yīng)用于真實(shí)場(chǎng)景粉铐。
對(duì)于我們希望研究的世界的任何方面疼约,無論是地球氣象,世界市場(chǎng)蝙泼,政治民意調(diào)查還是人類思想程剥,我們收集的數(shù)據(jù)通常都提供了這個(gè)主題的不完整描述。數(shù)據(jù)科學(xué)的核心挑戰(zhàn)是使用這部分信息作出可靠的結(jié)論汤踏。
在這個(gè)努力中织鲸,我們將結(jié)合兩個(gè)基本工具:計(jì)算和隨機(jī)化婚陪。例如助析,我們可能想使用溫度觀測(cè)來了解氣候變化的趨勢(shì)沸版。計(jì)算機(jī)允許我們使用所有可用的信息得出結(jié)論卓起。我們不僅僅關(guān)注一個(gè)地區(qū)的平均氣溫载荔,而是將整個(gè)溫度的范圍一起考慮盾饮,來構(gòu)建更加細(xì)致的分析。隨機(jī)性允許我們考慮許多不同方式懒熙,來完善不完整的信息丘损。我們不會(huì)假設(shè)溫度會(huì)以某種特定的方式變化,而是學(xué)習(xí)使用隨機(jī)性來設(shè)想許多可能的情景工扎,這些情景都與我們觀察到的數(shù)據(jù)一致徘钥。
應(yīng)用這種方法需要學(xué)習(xí),如何為一臺(tái)計(jì)算機(jī)編程肢娘,所以這個(gè)文本穿插了編程的完整介紹呈础,并假設(shè)沒有任何先驗(yàn)知識(shí)。 具有編程經(jīng)驗(yàn)的讀者會(huì)發(fā)現(xiàn)橱健,我們涵蓋了計(jì)算中的幾個(gè)主題而钞,這些主題并沒有出現(xiàn)在典型的計(jì)算機(jī)科學(xué)課程中。 數(shù)據(jù)科學(xué)也需要對(duì)數(shù)量進(jìn)行仔細(xì)的推理拘荡,但是本書并不假設(shè)超出基本代數(shù)的數(shù)學(xué)或統(tǒng)計(jì)背景臼节。 在本文中你會(huì)發(fā)現(xiàn)很少的方程。 相反珊皿,技巧使用一種編程語言描述网缝,對(duì)于讀者和執(zhí)行它們的計(jì)算機(jī)來說,是相同的蟋定。
計(jì)算工具
本文使用 Python 3 編程語言粉臊,以及數(shù)值和數(shù)據(jù)可視化的標(biāo)準(zhǔn)工具集,它們?cè)谏虡I(yè)應(yīng)用溢吻,科學(xué)實(shí)驗(yàn)和開源項(xiàng)目中廣泛使用维费。 Python 已經(jīng)招募了許多專業(yè)人士,它們使用數(shù)據(jù)得出結(jié)論促王。通過學(xué)習(xí) Python 語言犀盟,你將加入一個(gè)擁有百萬人口的,軟件開發(fā)人員和數(shù)據(jù)科學(xué)家社區(qū)蝇狼。
入門阅畴。開始用 Python 編寫程序的最簡單和推薦的方法是,登錄到本文的配套網(wǎng)站 https://datahub.berkeley.edu/迅耘。如果你擁有@ berkeley.edu
電子郵件地址贱枣,則你已經(jīng)可以完全訪問該網(wǎng)站上托管的編程環(huán)境监署。如果沒有,請(qǐng)?zhí)顚?a target="_blank" rel="nofollow">此表格來申請(qǐng)?jiān)L問纽哥。
你不能完全僅僅使用這個(gè)基于 Web 的編程環(huán)境钠乏。 Python 程序可以由任何計(jì)算機(jī)執(zhí)行,無論其制造商或操作系統(tǒng)如何春塌,只要安裝了該語言的支持晓避。如果你希望安裝符合本文的 Python 版本及其附帶庫,我們推薦將 Anaconda 發(fā)行版與 Python 3 語言解釋器只壳,IPython 庫和 Jupyter 筆記本環(huán)境打包在一起俏拱。
本文包括所有這些計(jì)算工具的完整介紹。你將學(xué)習(xí)編寫程序吼句,從數(shù)據(jù)生成圖像锅必,并使用在線發(fā)布的真實(shí)世界的數(shù)據(jù)集。
統(tǒng)計(jì)技巧
統(tǒng)計(jì)學(xué)科長期以來一直面臨與數(shù)據(jù)科學(xué)相同的根本挑戰(zhàn):如何使用不完整的信息得出有關(guān)世界的有力結(jié)論惕艳。統(tǒng)計(jì)學(xué)最重要的貢獻(xiàn)之一是搞隐,用于描述觀察與結(jié)論之間關(guān)系的,一致而準(zhǔn)確的詞匯远搪。本文繼續(xù)保持同樣的傳統(tǒng)尔许,重點(diǎn)是統(tǒng)計(jì)學(xué)中的一組核心推斷問題:假設(shè)檢驗(yàn),置信度估計(jì)和未知量預(yù)測(cè)终娃。
數(shù)據(jù)科學(xué)通過充分利用計(jì)算味廊,數(shù)據(jù)可視化,機(jī)器學(xué)習(xí)棠耕,優(yōu)化和信息訪問來擴(kuò)展統(tǒng)計(jì)領(lǐng)域余佛。快速計(jì)算機(jī)和互聯(lián)網(wǎng)的結(jié)合使得任何人都能夠訪問和分析大量的數(shù)據(jù)集:數(shù)百萬篇新聞文章窍荧,完整的百科全書辉巡,任何領(lǐng)域的數(shù)據(jù)庫以及大量的音樂,照片和視頻庫蕊退。
真實(shí)數(shù)據(jù)集的應(yīng)用激發(fā)了我們?cè)谡麄€(gè)文本中描述的統(tǒng)計(jì)技巧郊楣。真實(shí)數(shù)據(jù)通常沒有規(guī)律或匹配標(biāo)準(zhǔn)方程。如果把過多的注意力集中在簡單的總結(jié)上瓤荔,比如平均值净蚤,那么真實(shí)數(shù)據(jù)中有趣的變化就會(huì)丟失。計(jì)算機(jī)使一系列基于重采樣的方法成為可能输硝,它們適用于各種不同的推理問題今瀑,考慮了所有可用的信息,并且需要很少的假設(shè)或條件。雖然這些技巧經(jīng)常留作統(tǒng)計(jì)學(xué)的研究生課程橘荠,但它們的靈活性和簡單性非常適合數(shù)據(jù)科學(xué)應(yīng)用屿附。
為什么是數(shù)據(jù)科學(xué)
最重要的決策僅僅使用部分信息和不確定的結(jié)果做出。然而哥童,許多決策的不確定性挺份,可以通過獲取大量公開的數(shù)據(jù)集和有效分析所需的計(jì)算工具,而大幅度降低贮懈。以數(shù)據(jù)為導(dǎo)向的決策已經(jīng)改變了一大批行業(yè)压恒,包括金融,廣告错邦,制造業(yè)和房地產(chǎn)。同時(shí)型宙,大量的學(xué)科正在迅速發(fā)展撬呢,將大規(guī)模的數(shù)據(jù)分析納入其理論和實(shí)踐。
學(xué)習(xí)數(shù)據(jù)科學(xué)使個(gè)人能夠?qū)⑦@些技巧用于工作妆兑,科學(xué)研究和個(gè)人決策魂拦。批判性思維一直是嚴(yán)格教育的標(biāo)志,但在數(shù)據(jù)支持下搁嗓,批判往往是最有效的芯勘。對(duì)世界任何方面的批判性分析,可能是商業(yè)或社會(huì)科學(xué)腺逛,涉及歸納推理荷愕;結(jié)論很少直接證明,僅僅由現(xiàn)有的證據(jù)支持棍矛。數(shù)據(jù)科學(xué)提供了手段安疗,對(duì)任何一組觀測(cè)結(jié)果進(jìn)行精確,可靠和定量的論證够委。有了信息和計(jì)算機(jī)的前所未有的訪問荐类,如果沒有有效的推理技巧,對(duì)世界上任何可以衡量的方面的批判性思考都是不完整的茁帽。
世界上有太多沒有答案的問題和困難的挑戰(zhàn)玉罐,所以不能把這個(gè)批判性的推理留給少數(shù)專家。所有受過教育的社會(huì)成員都可以建立推斷數(shù)據(jù)的能力潘拨。這些工具吊输,技巧和數(shù)據(jù)集都是隨手可用的;本文的目的是使所有人都能訪問它們铁追。
繪制經(jīng)典作品
在這個(gè)例子中璧亚,我們將探討兩個(gè)經(jīng)典小說的統(tǒng)計(jì):馬克吐溫(Mark Twain)的《哈克貝利·芬歷險(xiǎn)記》(The Adventures of Huckleberry Finn)和路易莎·梅·奧爾科特(Louisa May Alcott)的《小女人》(Little Women)。任何一本書的文本都可以通過電腦以極快的速度讀取。 1923 年以前出版的書籍目前處于公有領(lǐng)域癣蟋,這意味著每個(gè)人都有權(quán)以任何方式復(fù)制或使用文本透硝。 古登堡計(jì)劃是一個(gè)在線出版公共領(lǐng)域書籍的網(wǎng)站。使用 Python疯搅,我們可以直接從網(wǎng)絡(luò)上加載這些書籍的文本濒生。
這個(gè)例子是為了說明本書的一些廣泛的主題。如果還不理解程序的細(xì)節(jié)幔欧,別擔(dān)心罪治。相反,重點(diǎn)關(guān)注下面生成的圖像礁蔗。后面的部分將介紹下面使用的 Python 編程語言的大部分功能觉义。
首先,我們將這兩本書的內(nèi)容讀入章節(jié)列表中浴井,稱為huck_finn_chapters
和little_women_chapters
晒骇。在 Python 中,名稱不能包含任何空格磺浙,所以我們經(jīng)常使用下劃線_
來代表空格洪囤。在下面的行中,左側(cè)提供了一個(gè)名稱撕氧,右側(cè)描述了一些計(jì)算的結(jié)果瘤缩。統(tǒng)一資源定位符或 URL 是互聯(lián)網(wǎng)上某些內(nèi)容的地址;這里是一本書的文字伦泥。#
符號(hào)是注釋的起始剥啤,計(jì)算機(jī)會(huì)忽略它,但有助于人們閱讀代碼不脯。
# Read two books, fast!
huck_finn_url = 'https://www.inferentialthinking.com/chapters/01/3/huck_finn.txt'
huck_finn_text = read_url(huck_finn_url)
huck_finn_chapters = huck_finn_text.split('CHAPTER ')[44:]
little_women_url = 'https://www.inferentialthinking.com/chapters/01/3/little_women.txt'
little_women_text = read_url(little_women_url)
little_women_chapters = little_women_text.split('CHAPTER ')[1:]
雖然計(jì)算機(jī)不能理解書的文本铐殃,它可以向我們提供文本結(jié)構(gòu)的一些視角。名稱huck_finn_chapters
現(xiàn)在已經(jīng)綁定到書中章節(jié)的列表跨新。我們可以將其放到一個(gè)表中富腊,來觀察每一章的開頭。
# Display the chapters of Huckleberry Finn in a table.
Table().with_column('Chapters', huck_finn_chapters)
Chapters |
---|
I. YOU don't know about me without you have read a book ... |
II. WE went tiptoeing along a path amongst the trees bac ... |
III. WELL, I got a good going-over in the morning from o ... |
IV. WELL, three or four months run along, and it was wel ... |
V. I had shut the door to. Then I turned around and ther ... |
VI. WELL, pretty soon the old man was up and around agai ... |
VII. "GIT up! What you 'bout?" I opened my eyes and look ... |
VIII. THE sun was up so high when I waked that I judged ... |
IX. I wanted to go and look at a place right about the m ... |
X. AFTER breakfast I wanted to talk about the dead man a ... |
(已省略 33 行)
每一章都以章節(jié)號(hào)開頭域帐,以羅馬數(shù)字的形式赘被,后面是本章的第一個(gè)句子。古登堡計(jì)劃將每章的第一個(gè)單詞變?yōu)榇髮憽?/p>
文本特征
《哈克貝利·芬歷險(xiǎn)記》描述了哈克和吉姆沿著密西西比河的旅程肖揣。湯姆·索亞(Tom Sawyer)在行動(dòng)進(jìn)行的時(shí)候加入了他們的行列民假。在加載文本后,我們可以快速地看到這些字符在本書的任何一處被提及的次數(shù)龙优。
# Count how many times the names Jim, Tom, and Huck appear in each chapter.
counts = Table().with_columns([
'Jim', np.char.count(huck_finn_chapters, 'Jim'),
'Tom', np.char.count(huck_finn_chapters, 'Tom'),
'Huck', np.char.count(huck_finn_chapters, 'Huck')
])
# Plot the cumulative counts:
# how many times in Chapter 1, how many times in Chapters 1 and 2, and so on.
cum_counts = counts.cumsum().with_column('Chapter', np.arange(1, 44, 1))
cum_counts.plot(column_for_xticks=3)
plots.title('Cumulative Number of Times Each Name Appears', y=1.08);
在上圖中羊异,橫軸顯示章節(jié)號(hào),縱軸顯示每個(gè)字符在該章節(jié)被提及到的次數(shù)。
吉姆是核心人物野舶,它的名字出現(xiàn)了很多次易迹。請(qǐng)注意,第 30 章中湯姆出現(xiàn)并加入了哈克和吉姆平道,在此之前睹欲,湯姆在本書中幾乎沒有提及。他和吉姆的曲線在這個(gè)位置上迅速上升一屋,因?yàn)樯婕皟烧叩男袆?dòng)都在變多窘疮。至于哈克,他的名字幾乎沒有出現(xiàn)冀墨,因?yàn)樗菙⑹稣摺?/p>
《小女人》是南北戰(zhàn)爭(zhēng)期間四個(gè)姐妹一起長大的故事闸衫。 在這本書中,章節(jié)號(hào)碼拼寫了出來诽嘉,章節(jié)標(biāo)題用大寫字母表示蔚出。
# The chapters of Little Women, in a table
Table().with_column('Chapters', little_women_chapters)
Chapters |
---|
ONE PLAYING PILGRIMS "Christmas won't be Christmas witho ... |
TWO A MERRY CHRISTMAS Jo was the first to wake in the gr ... |
THREE THE LAURENCE BOY "Jo! Jo! Where are you?" cried Me ... |
FOUR BURDENS "Oh, dear, how hard it does seem to take up ... |
FIVE BEING NEIGHBORLY "What in the world are you going t ... |
SIX BETH FINDS THE PALACE BEAUTIFUL The big house did pr ... |
SEVEN AMY'S VALLEY OF HUMILIATION "That boy is a perfect ... |
EIGHT JO MEETS APOLLYON "Girls, where are you going?" as ... |
NINE MEG GOES TO VANITY FAIR "I do think it was the most ... |
TEN THE P.C. AND P.O. As spring came on, a new set of am ... |
(已省略 37 行)
我們可以跟蹤主要人物的提及,來了解本書的情節(jié)含懊。 主角喬(Jo)和她的姐妹梅格(Meg),貝絲(Beth)和艾米(Amy)經(jīng)承普停互動(dòng)岔乔,直到第 27 章中她獨(dú)自搬到紐約。
# Counts of names in the chapters of Little Women
counts = Table().with_columns([
'Amy', np.char.count(little_women_chapters, 'Amy'),
'Beth', np.char.count(little_women_chapters, 'Beth'),
'Jo', np.char.count(little_women_chapters, 'Jo'),
'Meg', np.char.count(little_women_chapters, 'Meg'),
'Laurie', np.char.count(little_women_chapters, 'Laurie'),
])
# Plot the cumulative counts.
cum_counts = counts.cumsum().with_column('Chapter', np.arange(1, 48, 1))
cum_counts.plot(column_for_xticks=5)
plots.title('Cumulative Number of Times Each Name Appears', y=1.08);
勞里(Laurie)是個(gè)年輕人滚躯,最后和其中一個(gè)女孩結(jié)婚雏门。 看看你是否可以使用這個(gè)圖來猜測(cè)是哪一個(gè)。
另一種文本特征
在某些情況下掸掏,數(shù)量之間的關(guān)系能讓我們做出預(yù)測(cè)茁影。 本文將探討如何基于不完整的信息做出準(zhǔn)確的預(yù)測(cè),并研究結(jié)合多種不確定信息來源進(jìn)行決策的方法丧凤。
作為從多個(gè)來源獲取信息的可視化的例子募闲,讓我們首先使用計(jì)算機(jī)來獲取一些信息,它們通常手工難以獲取愿待。在小說的語境中浩螺,“特征”(Character)這個(gè)詞有第二個(gè)含義:一個(gè)印刷符號(hào),如字母仍侥,數(shù)字或標(biāo)點(diǎn)符號(hào)要出。 在這里,我們要求計(jì)算機(jī)來計(jì)算《哈克貝利·芬》和《小女人》的每章中的字符和句號(hào)數(shù)量农渊。
# In each chapter, count the number of all characters;
# call this the "length" of the chapter.
# Also count the number of periods.
chars_periods_huck_finn = Table().with_columns([
'Huck Finn Chapter Length', [len(s) for s in huck_finn_chapters],
'Number of Periods', np.char.count(huck_finn_chapters, '.')
])
chars_periods_little_women = Table().with_columns([
'Little Women Chapter Length', [len(s) for s in little_women_chapters],
'Number of Periods', np.char.count(little_women_chapters, '.')
])
這里是《哈克貝利·芬》的數(shù)據(jù)患蹂。 表格的每一行對(duì)應(yīng)小說的一個(gè)章節(jié),并顯示章節(jié)中的字符和句號(hào)數(shù)量。 毫不奇怪传于,字符少的章節(jié)往往句號(hào)也少囱挑,一般來說 - 章節(jié)越短,句子越少格了,反之亦然看铆。 然而,這種關(guān)系并不是完全可以預(yù)測(cè)的盛末,因?yàn)榫渥拥拈L度各不相同弹惦,還可能涉及其他標(biāo)點(diǎn)符號(hào),例如問號(hào)悄但。
chars_periods_huck_finn
《哈克貝利·芬》章節(jié)長度 | 句號(hào)數(shù)量 |
---|---|
7026 | 66 |
11982 | 117 |
8529 | 72 |
6799 | 84 |
8166 | 91 |
14550 | 125 |
13218 | 127 |
22208 | 249 |
8081 | 71 |
7036 | 70 |
(已省略 33 行)
這里是《小女人》的對(duì)應(yīng)數(shù)據(jù):
chars_periods_little_women
《小女人》章節(jié)長度 | 句號(hào)數(shù)量 |
---|---|
21759 | 189 |
22148 | 188 |
20558 | 231 |
25526 | 195 |
23395 | 255 |
14622 | 140 |
14431 | 131 |
22476 | 214 |
33767 | 337 |
18508 | 185 |
(已省略 37 行)
你可以看到棠隐,《小女人》的章節(jié)總的來說比《哈克貝利·芬》的章節(jié)要長。讓我們來看看這兩個(gè)簡單的變量 - 每一章的長度和句子數(shù)量 - 能否告訴我們這兩本書的更多內(nèi)容檐嚣。 我們實(shí)現(xiàn)它的一個(gè)方法是在同一個(gè)圖上繪制兩組數(shù)據(jù)助泽。
在下面的圖中,每本書的每一章都有一個(gè)點(diǎn)嚎京。 藍(lán)色圓點(diǎn)對(duì)應(yīng)于《哈克貝利·芬》嗡贺,金色圓點(diǎn)對(duì)應(yīng)于《小女人》。橫軸表示句號(hào)數(shù)量鞍帝,縱軸表示字符數(shù)诫睬。
plots.figure(figsize=(6, 6))
plots.scatter(chars_periods_huck_finn.column(1),
chars_periods_huck_finn.column(0),
color='darkblue')
plots.scatter(chars_periods_little_women.column(1),
chars_periods_little_women.column(0),
color='gold')
plots.xlabel('Number of periods in chapter')
plots.ylabel('Number of characters in chapter');
這個(gè)繪圖向我們展示,《小女人》的許多章節(jié)帕涌,而不是所有章節(jié)都比《哈克貝利·芬》的章節(jié)長摄凡,正如我們通過查看數(shù)字所看到的那樣。 但它也向我們展示了更多東西蚓曼。 請(qǐng)注意亲澡,藍(lán)點(diǎn)粗略聚集在一條直線上,黃點(diǎn)也是如此纫版。 此外看起來床绪,兩種顏色的點(diǎn)可能聚集在同一條直線上。
現(xiàn)在查看包含大約 100 個(gè)句號(hào)的所有章節(jié)其弊。 繪圖顯示会涎,這些章節(jié)大致包含約 10,000 個(gè)字符到約 15,000 個(gè)字符。每個(gè)句子大約有 100 到 150 個(gè)字符瑞凑。
事實(shí)上末秃,從這個(gè)繪圖看來,這兩本書的兩個(gè)句號(hào)之間平均有 100 到 150 個(gè)字符籽御,這是一個(gè)非常粗略的估計(jì)练慕。 也許這兩個(gè)偉大的 19 世紀(jì)小說正在表明我們現(xiàn)在非常熟悉的東西:Twitter 的 140 個(gè)字符的限制惰匙。