小白入门机器学习必备:编程语言环境介绍及搭建
導(dǎo)讀:工欲善其事,必先利其器,機(jī)器學(xué)習(xí)也不例外。算法原理理解得再清楚,最終也需要通過編寫代碼來真正實現(xiàn)功能和解決問題。
本文將介紹當(dāng)前機(jī)器學(xué)習(xí)主流的編程語言環(huán)境,當(dāng)前機(jī)器學(xué)習(xí)使用最多的編程語言是Python,在業(yè)界口碑一直不錯的Python語言借著機(jī)器學(xué)習(xí)的東風(fēng)一下躋身編程語言熱門榜的首位。
本文還將介紹Python語言下機(jī)器學(xué)習(xí)相關(guān)的支持庫,包括科學(xué)計算支持庫Numpy、機(jī)器學(xué)習(xí)庫Scikit-Learn和數(shù)據(jù)處理庫 Pandas。想要在實際工作中使用機(jī)器學(xué)習(xí)解決具體問題時,使用這些支持庫將大大提升效率。
作者:莫凡
來源:大數(shù)據(jù)DT(ID:hzdashuju)
01 常用環(huán)境
一般來說,算法理論的實踐方式有兩種,一種是自己動手將算法用代碼都實現(xiàn)一遍,另一種則是充分利用工具的便利性,快速了解掌握現(xiàn)有資源后,隨即開始著手解決現(xiàn)實問題。
對于要不要重復(fù)造輪子的爭論,我想是很難有決斷的,兩種方法各有利弊,這里我們選用第二種,這也貫徹了本文的宗旨:不是為了學(xué)習(xí)知識而制造知識,而是為了解決問題去學(xué)習(xí)知識。
機(jī)器學(xué)習(xí)經(jīng)過這幾年的高速發(fā)展,已經(jīng)積累了非常豐富的開放資源,通過充分利用這些資源,哪怕此前你對這個領(lǐng)域不了解,也能快速掌握并著手解決實際問題。
首先是編程語言,我們選擇Python。在前些年,Python和R語言在機(jī)器學(xué)習(xí)領(lǐng)域保持著雙雄并立的局面,大致可以認(rèn)為工業(yè)界偏愛Python而學(xué)術(shù)界偏愛R,但隨著技術(shù)發(fā)展,特別是這幾年深度學(xué)習(xí)所需的支持庫毫無例外地都選擇了用Python實現(xiàn)之后,Python語言已經(jīng)成為機(jī)器學(xué)習(xí)領(lǐng)域毫無疑問的“老大”。
由于機(jī)器學(xué)習(xí)的火熱,Python甚至擁有了與傳統(tǒng)編程語言C和Java一較高下的底氣,在多種編程語言排行榜上都大有后來居上的趨勢。那么Python,決定就是你了!
接下來是支持庫Numpy。機(jī)器學(xué)習(xí)涉及矩陣運(yùn)算等大量數(shù)學(xué)運(yùn)算,好在Python有兩大特點,一是靈活,二是庫多,Numpy就是Python中專門設(shè)計用于科學(xué)計算的專業(yè)支持庫,在業(yè)界有口皆碑。不只是機(jī)器學(xué)習(xí),其他科學(xué)領(lǐng)域譬如天體物理涉及的數(shù)學(xué)運(yùn)算,要么直接使用Numpy,要么基于Numpy構(gòu)建更高層的功能庫。
最后是算法庫Scikit-Learn。基于Python的機(jī)器學(xué)習(xí)算法庫實際上有很多,每過一段時間就會冒出個“前五”“前十”這樣的排行,但穩(wěn)坐榜首的一直是Scikit-Learn。
它不但種類齊備,市面上見得到的機(jī)器學(xué)習(xí)算法基本上都能在此找到對應(yīng)的API,簡直是一家“機(jī)器學(xué)習(xí)算法超市”,而且封裝良好、結(jié)構(gòu)清晰,你可以通過簡單幾行代碼就能完成一個復(fù)雜算法的調(diào)用,是機(jī)器學(xué)習(xí)領(lǐng)域入門的福音,更是進(jìn)階的法寶。
另外再加上一個Pandas數(shù)據(jù)處理庫。它內(nèi)置許多排序、統(tǒng)計之類的實用功能,屬于“沒它也不是不行,但有它會方便很多”的角色。業(yè)界實現(xiàn)機(jī)器學(xué)習(xí),基本上都會用到Numpy、Scikit-Learn和Pandas這三件套。
02 Python簡介
Python是一種動態(tài)的高級編程語言,與C和Java需要編譯執(zhí)行不同,Python代碼是通過解釋器解釋執(zhí)行,一個明顯的區(qū)別是,Python的數(shù)據(jù)類型不用事先聲明,語法更為靈活多變,代碼看起來也更加簡潔,用C和Java需要十行代碼才能寫明白的意思,可能用Python寫一行就可以了。
高效快速是Python引以為傲的特點,Python社區(qū)甚至流傳一句口號:“Life is short, I use Python.”
Python仍在不斷迭代,而且并不向前兼容,這也導(dǎo)致當(dāng)前Python分裂成兩大版本分支,即Python 2.X和Python 3.X,雖然從語法上看還不至于成為兩款語言,但二者代碼是無法混用的,對于版本的選擇也是開始學(xué)習(xí)使用Python時所要確定的第一件事。
之前一般認(rèn)為,Python 2.X的發(fā)展時間更長,各方面的支持庫更多且更成熟,不少人推薦從這個版本入手。但隨著Python團(tuán)隊宣布將于2020年停止對Python 2.X的維護(hù),各大社區(qū)都早已開始了從2.X向3.X遷移的工作,所以現(xiàn)在開始學(xué)Python的話更建議選擇3.X。Python官網(wǎng)見圖2-1。
▲圖2-1 Python官網(wǎng)首頁
1. Python的安裝
Python具有很強(qiáng)的泛用性,支持Windows、Linux/UNIX、Mac OS X等主流操作系統(tǒng)平臺,安裝也很簡單,可以通過
https://www.python.org/downloads
選擇你使用的操作系統(tǒng)平臺所對應(yīng)的在線或離線安裝包并進(jìn)行安裝。在安裝包下載頁面同時提供了多個版本的Python安裝包,如果初次接觸可能讓你覺得難以選擇。不過請放心,你也可以直接下載最新版本的Python安裝包。
▲圖2-2 Python下載頁面
Python是一款開源編程語言,你也可以選擇通過源代碼進(jìn)行編譯安裝。
2. Python的基本用法?
Python是一款通用編程語言,語法滿足圖靈完備性,這里無法完全展開說明。
不過,如果你熟悉C或者Java語言,那么可以認(rèn)為Python的語法就是它們的高度精簡版,除了上面提到的不用進(jìn)行類型聲明外,Python還少了用來表示作用域的大括號以及語句結(jié)尾的分號,但同時,在Python中縮進(jìn)不僅僅是代碼規(guī)范,而是語法層面的強(qiáng)制要求。
如果你有語言基礎(chǔ),記住這些區(qū)別,應(yīng)該就能很快熟練地使用Python。
這里僅對兩項常用的Python工具進(jìn)行說明,即Python庫安裝工具Pip和Conda。豐富的第三方支持庫是Python功能強(qiáng)大的原因之一。在使用Python實現(xiàn)功能時,往往需要依賴第三方支持庫,這些第三方庫需要先安裝再使用。安裝方法是通過Pip或Conda工具,在命令行輸入命令:
pip?install?庫名或
conda?庫名進(jìn)行聯(lián)網(wǎng)下載并自動安裝。
一般當(dāng)你成功安裝Python后,就能在命令行中直接使用Pip命令了,而Conda則可能需要額外進(jìn)行安裝才能夠使用。Conda的功能更為強(qiáng)大,但如果你并不了解Python及相關(guān)背景知識,推薦通過Pip工具來下載安裝第三方庫。
在庫的使用方面,Python也與其他編程語言一樣,需要先導(dǎo)入再使用,語法是:
import?庫名import之后就能正常使用庫的資源了。如果庫名較長,還可以使用:
import?庫名?as?別名設(shè)定別名之后,通過別名也能夠使用庫的資源。
要使用庫里的某個類,可以通過“庫名.類名”的方法調(diào)用。如果認(rèn)為這樣寫麻煩,或者導(dǎo)致單行語句太長,可以在導(dǎo)入時使用:
from?庫名?import?類名這樣就可以在代碼中直接使用類名了。
03 Numpy簡介
Numpy是Python語言的科學(xué)計算支持庫,提供了線性代數(shù)、傅里葉變換等非常有用的數(shù)學(xué)工具。Numpy是Python圈子里非常知名的基礎(chǔ)庫,即使你并不直接進(jìn)行科學(xué)計算,但如圖像處理等相關(guān)功能庫,其底層實現(xiàn)仍需要數(shù)學(xué)工具進(jìn)行支持,則需要首先安裝Numpy庫。Numpy官網(wǎng)見圖2-3。
▲圖2-3 Numpy官網(wǎng)首頁
1. Numpy的安裝
Numpy的安裝很簡單,使用Pip直接安裝即可。命令如下:
pip?install?-U?numpy2. Numpy的基本用法
Numpy擁有強(qiáng)大的科學(xué)計算功能,也許剛一接觸容易眼花繚亂,不知從何入手。不過不必?fù)?dān)心,Array數(shù)據(jù)類型是Numpy的核心數(shù)據(jù)結(jié)構(gòu),與Python的List類型相似,但功能要強(qiáng)大得多。Numpy相關(guān)功能都是圍繞著Array類型建設(shè)的,可以作為你了解Numpy的一條中心線索。
使用Numpy包很簡單,只要用import導(dǎo)入即可。業(yè)界習(xí)慣在導(dǎo)入時使用“np”作為它的別名:
import?numpy?as?np導(dǎo)入后就可以使用了,常用功能如下。
array
數(shù)據(jù)創(chuàng)建
創(chuàng)建Array類型數(shù)據(jù)
zeros
數(shù)據(jù)創(chuàng)建
創(chuàng)建值為0的Array類型數(shù)據(jù)
ones
數(shù)據(jù)創(chuàng)建
創(chuàng)建值為1的Array類型數(shù)據(jù)
eye
數(shù)據(jù)創(chuàng)建
創(chuàng)建單位矩陣
arange
數(shù)據(jù)創(chuàng)建
類似內(nèi)置函數(shù)range,生成等差數(shù)值
linspace
數(shù)據(jù)創(chuàng)建
生成可指定是否包含終值的等差數(shù)值
random.rand
數(shù)據(jù)創(chuàng)建
隨機(jī)生成數(shù)值
T
數(shù)據(jù)操作
轉(zhuǎn)置操作
reshape
數(shù)據(jù)操作
不改變原數(shù)據(jù)的維度變換
resize
數(shù)據(jù)操作
修改原數(shù)據(jù)的維度變換
mean
統(tǒng)計操作
取均值
sum
統(tǒng)計操作
求和
max
統(tǒng)計操作
取最大值
min
統(tǒng)計操作
取最小值
var
統(tǒng)計操作
求方差
std
統(tǒng)計操作
求標(biāo)準(zhǔn)差
corrcoef
統(tǒng)計操作
計算相關(guān)系數(shù)
append
數(shù)據(jù)操作
新增
insert
數(shù)據(jù)操作
插入
delete
數(shù)據(jù)操作
刪除
concatenate
數(shù)據(jù)操作
按行(列)連接數(shù)據(jù)表
add
數(shù)學(xué)運(yùn)算
標(biāo)(向)量加法
subtract
數(shù)學(xué)運(yùn)算
標(biāo)(向)量減法
multiply
數(shù)學(xué)運(yùn)算
標(biāo)(向)量乘法
divide
數(shù)學(xué)運(yùn)算
標(biāo)(向)量除法
exp
數(shù)學(xué)運(yùn)算
以e為底的指數(shù)運(yùn)算
log
數(shù)學(xué)運(yùn)算
以e為底的對數(shù)運(yùn)算
dot
數(shù)學(xué)運(yùn)算
點乘
04 Scikit-Learn簡介
正如機(jī)器學(xué)習(xí)中推薦使用Python語言,用Python語言使用機(jī)器學(xué)習(xí)算法時,推薦使用Scikit-Learn工具。
或者應(yīng)該反過來,現(xiàn)在機(jī)器學(xué)習(xí)推薦使用Python,正是因為Python擁有Scikit-Learn這樣功能強(qiáng)大的支持包,它已經(jīng)把底層的臟活、累活都默默完成了,讓使用者能夠?qū)氋F的注意力和精力集中在解決問題上,極大地提高了產(chǎn)出效率。Scikit-Learn官網(wǎng)見圖2-4。
▲圖2-4 Scikit-Learn官網(wǎng)首頁
1. Scikit-Learn的安裝
安裝Scikit-Learn可以有兩種方法。通過Pip安裝,命令如下:
pip?install?-U?scikit-learn或通過 Conda安裝,命令如下:
conda?install?scikit-learn2. Scikit-Learn的基本用法
Scikit-Learn庫包含了常見的機(jī)器學(xué)習(xí)算法,而且還在不斷更新,常見機(jī)器學(xué)習(xí)算法都可以在Scikit-Learn庫中找到,不妨將它當(dāng)作機(jī)器學(xué)習(xí)算法的百科全書來使用。這里簡要介紹它的用法。
使用Scikit-Learn包很簡單,使用import導(dǎo)入即可,但須注意Scikit-Learn包的包名為sklearn:
import?sklearn調(diào)用機(jī)器學(xué)習(xí)算法也非常簡單,Scikit-Learn庫已經(jīng)將算法按模型分類,查找起來非常方便。如線性回歸算法可以從線性模型中找到,用法如下:
from?sklearn?import?linear_model model?=?linear_model.LinearRegression()Logistic回歸算法也是依據(jù)線性模型,同樣也在其下:
from?sklearn.linear_model?import?LogisticRegression model?=linear_model.LogisticRegression()類似的還有基于近鄰模型的KNN算法:
from?sklearn.neighbors?import?NearestNeighbors model?=NearestNeighbors()生成模型后,一般使用fit方法給模型“喂”數(shù)據(jù)及進(jìn)行訓(xùn)練。完成訓(xùn)練的模型可以使用predict方法進(jìn)行預(yù)測。
Scikit-Learn庫對機(jī)器學(xué)習(xí)算法進(jìn)行了高度封裝,使用過程非常簡單,只要根據(jù)格式填入數(shù)據(jù)即可,不涉及額外的數(shù)學(xué)運(yùn)算操作,甚至可以說只要知道機(jī)器學(xué)習(xí)算法的名字和優(yōu)劣,就能直接使用,非常便利。
05 Pandas簡介
Pandas是Python語言中知名的數(shù)據(jù)處理庫。數(shù)據(jù)是模型算法的燃料,也決定了算法能夠達(dá)到的上限。一般在學(xué)習(xí)中接觸的數(shù)據(jù)都十分規(guī)整,可以直接供模型使用。
但實際上,從生產(chǎn)環(huán)境中采集得到的“野生”數(shù)據(jù)則需要首先進(jìn)行數(shù)據(jù)清洗工作,最常見的如填充丟失字段值。數(shù)據(jù)清洗工作一般使用Pandas來完成,特征工程也可通過Pandas完成。Pandas官網(wǎng)見圖2-5。
▲圖2-5 Pandas官網(wǎng)首頁
1. Pandas的安裝
安裝Pandas可以有兩種方法。通過Pip安裝,命令如下:
pip?install?-U?pandas或通過 Conda安裝,命令如下:
conda?install?pandas2. Pandas的基本用法
Pandas針對數(shù)據(jù)處理的常用功能而設(shè)計,具有從不同格式的文件中讀寫數(shù)據(jù)的功能,使用Pandas進(jìn)行一些統(tǒng)計操作特別便利。與Numpy類似,Pandas也有兩個核心的數(shù)據(jù)類型,即Series和DataFrame。
Series:一維數(shù)據(jù),可以認(rèn)為是一個統(tǒng)計功能增強(qiáng)版的List類型。
DataFrame:多維數(shù)據(jù),由多個Series組成,不妨認(rèn)為是電子表格里的Sheet。
使用Pandas 包很簡單,只要import導(dǎo)入即可。業(yè)界習(xí)慣在導(dǎo)入時使用“pd”作為它的別名:
import?pandas?as?pd導(dǎo)入后就可以使用了,其常用功能如下。
read_csv
讀取數(shù)據(jù)
從CSV格式文件中讀取數(shù)據(jù)
read_excel
讀取數(shù)據(jù)
從電子表格中讀取數(shù)據(jù)
read_json
讀取數(shù)據(jù)
從json格式的文件中讀取數(shù)據(jù)
read_clipboard
讀取數(shù)據(jù)
從剪切板讀取數(shù)據(jù)
to_csv
寫入數(shù)據(jù)
將數(shù)據(jù)寫入CSV格式文件
to_excel
寫入數(shù)據(jù)
將數(shù)據(jù)寫入電子表格
to_json
寫入數(shù)據(jù)
將數(shù)據(jù)寫入json格式文件
to_clipboard
寫入數(shù)據(jù)
將數(shù)據(jù)寫入剪切板
Series
寫入數(shù)據(jù)
創(chuàng)建Series類型數(shù)據(jù)
DataFrame
寫入數(shù)據(jù)
創(chuàng)建DataFrame類型數(shù)據(jù)
head
信息查看
從頭開始查看N位數(shù)據(jù)
tail
信息查看
從末尾開始查看N位數(shù)據(jù)
shape
信息查看
行列數(shù)信息
dropna
數(shù)據(jù)操作
刪除空值
fillna
數(shù)據(jù)操作
填充空值
sort_values
數(shù)據(jù)操作
正(逆)序排序
append
數(shù)據(jù)操作
橫向(按行)連接兩個數(shù)據(jù)表
concat
數(shù)據(jù)操作
縱向(按列)連接兩個數(shù)據(jù)表
value_counts
統(tǒng)計操作
值計數(shù)
describe
統(tǒng)計操作
總體概況信息
info
統(tǒng)計操作
數(shù)值類型統(tǒng)計
mean
統(tǒng)計操作
取均值
corr
統(tǒng)計操作
計算相關(guān)系數(shù)
count
統(tǒng)計操作
非空值計數(shù)
max
統(tǒng)計操作
取最大值
min
統(tǒng)計操作
取最小值
median
統(tǒng)計操作
計算中位數(shù)
std
統(tǒng)計操作
計算標(biāo)準(zhǔn)差
關(guān)于作者:莫凡,新技術(shù)深度愛好者,曾經(jīng)從事信息安全前沿技術(shù)跟蹤研究和數(shù)據(jù)分析工作,在各類信息安全類技術(shù)期刊發(fā)表文章五十余篇,現(xiàn)轉(zhuǎn)為投身高端知識“白菜化”項目,希望能讓將更多聽起來高大上的名詞沾一沾“人間煙火”,成為日常生活中真正用得上的知識。
本文摘編自《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實現(xiàn)》,經(jīng)出版方授權(quán)發(fā)布。
延伸閱讀
《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實現(xiàn)》
點擊上圖了解及購買
轉(zhuǎn)載請聯(lián)系微信:DoctorData
推薦語:從生活案例中理解算法,發(fā)現(xiàn)算法的樂趣,再把算法應(yīng)用到機(jī)器學(xué)習(xí)中。零基礎(chǔ)掌握算法精髓,快速進(jìn)入人工智能開發(fā)領(lǐng)域。
有話要說????
Q:?入門機(jī)器學(xué)習(xí),你準(zhǔn)備好了嗎?
歡迎留言與大家分享
猜你想看????
新手學(xué)Python, 如何從"入門到入土"變?yōu)?#34;從入門到快速上車"?
機(jī)器學(xué)習(xí)入門必讀:6種簡單實用算法及學(xué)習(xí)曲線、思維導(dǎo)圖
2020大風(fēng)口!什么是圖神經(jīng)網(wǎng)絡(luò)?有什么用?終于有人講明白了
學(xué)AI哪家強(qiáng)?2019全球排行清華第1,北大第2
據(jù)統(tǒng)計,99%的大咖都完成了這個神操作
????
原來你也在看
總結(jié)
以上是生活随笔為你收集整理的小白入门机器学习必备:编程语言环境介绍及搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 终于有人把大数据架构讲明白了
- 下一篇: 6个案例手把手教你用Python和Ope