《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 一文讀懂為什么要選擇 Python做機(jī)器學(xué)習(xí)

一文讀懂為什么要選擇 Python做機(jī)器學(xué)習(xí)

2018-08-18
關(guān)鍵詞: Python

  隨著機(jī)器學(xué)習(xí)的興起,Python 逐步成為了「最受歡迎」的語(yǔ)言。它簡(jiǎn)單易用、邏輯明確并擁有海量的擴(kuò)展包,因此其不僅成為機(jī)器學(xué)習(xí)與數(shù)據(jù)科學(xué)的首選語(yǔ)言,同時(shí)在網(wǎng)頁(yè)、數(shù)據(jù)爬取可科學(xué)研究等方面成為不二選擇。此外,很多入門級(jí)的機(jī)器學(xué)習(xí)開(kāi)發(fā)者都是跟隨大流選擇 Python,但到底為什么要選擇 Python 就是本文的核心內(nèi)容。

  本教程的目的是讓你相信兩件事:首先,Python 是一種非常棒的編程語(yǔ)言;其次,如果你是一名科學(xué)家,Python 很可能值得你去學(xué)習(xí)。本教程并非想要說(shuō)明 Python 是一種萬(wàn)能的語(yǔ)言;相反,作者明確討論了在幾種情況下,Python 并不是一種明智的選擇。本教程的目的只是提供對(duì) Python 一些核心特征的評(píng)論,并闡述作為一種通用的科學(xué)計(jì)算語(yǔ)言,它比其他常用的替代方案(最著名的是 R 和 Matlab)更有優(yōu)勢(shì)。

  本教程的其余部分假定你已經(jīng)有了一些編程經(jīng)驗(yàn),如果你非常精通其他以數(shù)據(jù)為中心的語(yǔ)言(如 R 或 Matlab),理解本教程就會(huì)非常容易。本教程不能算作一份關(guān)于 Python 的介紹,且文章重點(diǎn)在于為什么應(yīng)該學(xué)習(xí) Python 而不是怎樣寫 Python 代碼(盡管其他地方有大量的優(yōu)秀教程)。

  概述

  Python 是一種廣泛使用、易于學(xué)習(xí)、高級(jí)、通用的動(dòng)態(tài)編程語(yǔ)言。這很令人滿意,所以接下來(lái)分開(kāi)討論一些特征。

  Python(相對(duì)來(lái)說(shuō))易于學(xué)習(xí)

  編程很難,因此從絕對(duì)意義上來(lái)說(shuō),除非你已經(jīng)擁有編程經(jīng)驗(yàn),否則編程語(yǔ)言難以學(xué)習(xí)。但是,相對(duì)而言,Python 的高級(jí)屬性(見(jiàn)下一節(jié))、語(yǔ)法可讀性和語(yǔ)義直白性使得它比其他語(yǔ)言更容易學(xué)習(xí)。例如,這是一個(gè)簡(jiǎn)單 Python 函數(shù)的定義(故意未注釋),它將一串英語(yǔ)單詞轉(zhuǎn)換為(crummy)Pig Latin:

  def pig_latin(text):

  ''' Takes in a sequence of words and converts it to (imperfect) pig latin. '''

  word_list = text.split(' ')

  output_list = []

  for word in word_list:

  word = word.lower()

  if word.isalpha():

  first_char = word[0]

  if first_char in 'aeiou':

  word = word + 'ay'

  else:

  word = word[1:] + first_char + 'yay'

  output_list.append(word)

  pygged = ' '.join(output_list)

  return pygged

  以上函數(shù)事實(shí)上無(wú)法生成完全有效的 Pig Latin(假設(shè)存在「有效 Pig Latin」),但這沒(méi)有關(guān)系。有些情況下它是可行的:

  test1 = pig_latin("let us see if this works")

  print(test1)

  拋開(kāi) Pig Latin 不說(shuō),這里的重點(diǎn)只是,出于幾個(gè)原因,代碼是很容易閱讀的。首先,代碼是在高級(jí)抽象中編寫的(下面將詳細(xì)介紹),因此每行代碼都會(huì)映射到一個(gè)相當(dāng)直觀的操作。這些操作可以是「取這個(gè)單詞的第一個(gè)字符」,而不是映射到一個(gè)沒(méi)那么直觀的低級(jí)操作,例如「為一個(gè)字符預(yù)留一個(gè)字節(jié)的內(nèi)存,稍后我會(huì)傳入一個(gè)字符」。其次,控制結(jié)構(gòu)(如,for—loops,if—then 條件等)使用諸如「in」,「and」和「not」的簡(jiǎn)單單詞,其語(yǔ)義相對(duì)接近其自然英語(yǔ)含義。第三,Python 對(duì)縮進(jìn)的嚴(yán)格控制強(qiáng)加了一種使代碼可讀的規(guī)范,同時(shí)防止了某些常見(jiàn)的錯(cuò)誤。第四,Python 社區(qū)非常強(qiáng)調(diào)遵循樣式規(guī)定和編寫「Python 式的」代碼,這意味著相比使用其他語(yǔ)言的程序員而言,Python 程序員更傾向于使用一致的命名規(guī)定、行的長(zhǎng)度、編程習(xí)慣和其他許多類似特征,它們共同使別人的代碼更易閱讀(盡管這可以說(shuō)是社區(qū)的一個(gè)特征而不是語(yǔ)言本身)。

  Python 是一種高級(jí)語(yǔ)言

  與其他許多語(yǔ)言相比,Python 是一種相對(duì)「高級(jí)」的語(yǔ)言:它不需要(并且在許多情況下,不允許)用戶擔(dān)心太多底層細(xì)節(jié),而這是其他許多語(yǔ)言需要去處理的。例如,假設(shè)我們想創(chuàng)建一個(gè)名為「my_box_of_things」的變量當(dāng)作我們所用東西的容器。我們事先不知道我們想在盒子中保留多少對(duì)象,同時(shí)我們希望在添加或刪除對(duì)象時(shí),對(duì)象數(shù)量可以自動(dòng)增減。所以這個(gè)盒子需要占據(jù)一個(gè)可變的空間:在某個(gè)時(shí)間點(diǎn),它可能包含 8 個(gè)對(duì)象(或「元素」),而在另一個(gè)時(shí)間點(diǎn),它可能包含 257 個(gè)對(duì)象。在像 C 這樣的底層語(yǔ)言中,這個(gè)簡(jiǎn)單的要求就已經(jīng)給我們的程序帶來(lái)了一些復(fù)雜性,因?yàn)槲覀冃枰崆奥暶骱凶有枰紦?jù)多少空間,然后每次我們想要增加盒子需要的空間時(shí),我么需要明確創(chuàng)建一個(gè)占據(jù)更多空間的全新的盒子,然后將所有東西拷貝到其中。

  相比之下,在 Python 中,盡管在底層這些過(guò)程或多或少會(huì)發(fā)生(效率較低),但我們?cè)谑褂酶呒?jí)語(yǔ)言編寫時(shí)并不需要擔(dān)心這一部分。從我們的角度來(lái)看,我們可以創(chuàng)建自己的盒子并根據(jù)喜好添加或刪除對(duì)象:

  # Create a box (really, a 'list') with 5 things# Create

  my_box_of_things = ['Davenport', 'kettle drum', 'swallow-tail coat', 'table cloth', 'patent leather shoes']

  print(my_box_of_things)

  ['Davenport', 'kettle drum', 'swallow-tail coat', 'table cloth', 'patent leather shoes']

  # Add a few more things

  my_box_of_things += ['bathing suit', 'bowling ball', 'clarinet', 'ring']

  # Maybe add one last thing

  my_box_of_things.append('radio that only needs a fuse')

  # Let's see what we have...

  print(my_box_of_things)

  更一般來(lái)說(shuō),Python(以及根據(jù)定義的其他所有高級(jí)語(yǔ)言)傾向于隱藏需要在底層語(yǔ)言中明確表達(dá)的各種死記硬背的聲明。這使得我們可以編寫非常緊湊、清晰的代碼(盡管它通常以降低性能為代價(jià),因?yàn)閮?nèi)部不再可訪問(wèn),因此優(yōu)化變得更加困難)。

  例如,考慮從文件中讀取純文本這樣看似簡(jiǎn)單的行為。對(duì)于與文件系統(tǒng)直接接觸而傷痕累累的開(kāi)發(fā)者來(lái)說(shuō),從概念上看似乎只需要兩個(gè)簡(jiǎn)單的操作就可以完成:首先打開(kāi)一個(gè)文件,然后從其中讀取。實(shí)際過(guò)程遠(yuǎn)不止這些,并且比 Python 更底層的語(yǔ)言通常強(qiáng)制(或至少是鼓勵(lì))我們?nèi)コ姓J(rèn)這一點(diǎn)。例如,這是在 Java 中從文件中讀取內(nèi)容的規(guī)范(盡管肯定不是最簡(jiǎn)潔的)方法:

  import java.io.BufferedReader;

  import java.io.FileReader;

  import java.io.IOException;

  public class ReadFile {

  public static void main(String[] args) throws IOException{

  String fileContents = readEntireFile("./foo.txt");

  }

  private static String readEntireFile(String filename) throws IOException {

  FileReader in = new FileReader(filename);

  StringBuilder contents = new StringBuilder();

  char[] buffer = new char[4096];

  int read = 0;

  do {

  contents.append(buffer, 0, read);

  read = in.read(buffer);

  } while (read >= 0);

  return contents.toString();

  }

  }

  你可以看到我們不得不做一些令人苦惱的事,例如導(dǎo)入文件讀取器、為文件中的內(nèi)容創(chuàng)建一個(gè)緩存,以塊的形式讀取文件塊并將它們分配到緩存中等等。相比之下,在 Python 中,讀取文件中的全部?jī)?nèi)容只需要如下代碼:

  # Read the contents of "hello_world.txt"

  text = open("hello_world.txt").read()

  當(dāng)然,這種簡(jiǎn)潔性并不是 Python 獨(dú)有的;還有其他許多高級(jí)語(yǔ)言同樣隱藏了簡(jiǎn)單請(qǐng)求所暗含的大部分令人討厭的內(nèi)部過(guò)程(如,Ruby,R,Haskell 等)。但是,相對(duì)來(lái)說(shuō)比較少有其他語(yǔ)言能與接下來(lái)探討的 Python 特征相媲美。

  Python 是一種通用語(yǔ)言

  根據(jù)設(shè)計(jì),Python 是一種通用的語(yǔ)言。也就是說(shuō),它旨在允許程序員在任何領(lǐng)域編寫幾乎所有類型的應(yīng)用,而不是專注于一類特定的問(wèn)題。在這方面,Python 可以與(相對(duì))特定領(lǐng)域的語(yǔ)言進(jìn)行對(duì)比,如 R 或 PHP。這些語(yǔ)言原則上可用于很多情形,但仍針對(duì)特定用例進(jìn)行了明確優(yōu)化(在這兩個(gè)示例中,分別用于統(tǒng)計(jì)和網(wǎng)絡(luò)后端開(kāi)發(fā))。

  Python 通常被親切地成為「所有事物的第二個(gè)最好的語(yǔ)言」,它很好地捕捉到了這樣的情緒,盡管在很多情況下 Python 并不是用于特定問(wèn)題的最佳語(yǔ)言,但它通常具有足夠的靈活性和良好的支持性,使得人們?nèi)匀豢梢韵鄬?duì)有效地解決問(wèn)題。事實(shí)上,Python 可以有效地應(yīng)用于許多不同的應(yīng)用中,這使得學(xué)習(xí) Python 成為一件相當(dāng)有價(jià)值的事。因?yàn)樽鳛橐粋€(gè)軟件開(kāi)發(fā)人員,能夠使用單一語(yǔ)言實(shí)現(xiàn)所有事情,而不是必須根據(jù)所執(zhí)行的項(xiàng)目在不同語(yǔ)言和環(huán)境間進(jìn)行切換,是一件非常棒的事。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲区一区二区三区| 欧美日韩高清在线观看| 久久精品99国产精品日本| 亚洲人成啪啪网站| 国内精品一区二区三区| 欧美成人午夜视频| 久久精品二区亚洲w码| 亚洲视频在线观看视频| 亚洲三级色网| 亚洲综合电影| 99ri日韩精品视频| 亚洲国产精品久久久久秋霞影院| 国产欧美一区二区三区在线看蜜臀| 欧美精品国产精品| 老司机一区二区三区| 久久成人精品一区二区三区| 亚洲视频成人| 日韩视频在线你懂得| 亚洲国产精品va在线看黑人| 西西裸体人体做爰大胆久久久| 亚洲私人黄色宅男| 日韩视频一区| 亚洲精品女av网站| 很黄很黄激情成人| 国产视频在线一区二区| 国产日本欧美在线观看 | 欧美中文字幕精品| 一本一本久久| 日韩午夜激情电影| 日韩网站在线看片你懂的| 亚洲人久久久| 亚洲片在线观看| 亚洲国产精品成人久久综合一区| 久久成人精品无人区| 欧美一区二区三区四区夜夜大片| 亚洲一区日本| 亚洲一区国产视频| 亚洲欧美日本国产专区一区| 亚洲综合欧美日韩| 午夜欧美大片免费观看| 亚洲视频每日更新| 亚洲午夜激情在线| 亚洲一区图片| 午夜精品美女自拍福到在线| 亚洲欧美成人网| 欧美一区二区久久久| 欧美在线日韩精品| 亚洲高清不卡在线| 亚洲理论在线观看| 在线视频日韩| 亚洲一区二区三区四区中文| 亚洲综合视频1区| 欧美一区二区成人| 久久天堂精品| 欧美丰满高潮xxxx喷水动漫| 欧美日韩1080p| 国产精品久久久久三级| 国产精品日本一区二区| 国产嫩草一区二区三区在线观看| 亚洲电影免费| 日韩一级黄色片| 亚洲欧美另类综合偷拍| 亚洲丁香婷深爱综合| 日韩视频免费观看高清完整版| 亚洲图色在线| 久久精品亚洲一区| 欧美高清hd18日本| 欧美日韩四区| 国产日产精品一区二区三区四区的观看方式| 国产夜色精品一区二区av| 伊人婷婷久久| 亚洲人成高清| 欧美伊人影院| 亚洲电影成人| 亚洲欧美日韩在线观看a三区 | 久久久久国产精品一区二区| 欧美剧在线观看| 国语自产偷拍精品视频偷| av成人激情| 亚洲欧洲视频在线| 久久九九免费| 国产精品美女久久| 91久久精品国产91性色| 午夜一区在线| 在线中文字幕一区| 免费成人毛片| 国产亚洲一级高清| 一本色道久久综合狠狠躁的推荐| 亚洲国产精品久久人人爱蜜臀| 欧美亚洲在线| 欧美日韩国产综合视频在线观看中文| 狠狠干狠狠久久| 小黄鸭精品aⅴ导航网站入口| 亚洲视频一区二区| 欧美黄色aa电影| 精久久久久久| 欧美亚洲一区二区在线观看| 亚洲视频自拍偷拍| 欧美电影免费观看网站| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲男人第一网站| 亚洲一二三级电影| 欧美日韩精品一区| 亚洲电影一级黄| 久久精品系列| 欧美一区视频| 国产欧美日韩精品一区| 9l视频自拍蝌蚪9l视频成人| 日韩香蕉视频| 欧美高清影院| 最新成人av在线| 日韩午夜激情电影| 欧美理论视频| 亚洲青涩在线| 日韩一区二区精品葵司在线| 欧美高清在线视频观看不卡| 在线免费观看视频一区| 久久精品视频免费| 久久精品一区二区三区不卡牛牛| 国产精品日韩欧美一区二区三区| 夜夜躁日日躁狠狠久久88av| 日韩视频在线免费| 欧美精品一区在线发布| 1024欧美极品| 亚洲裸体在线观看| 欧美精品成人| 亚洲免费观看视频| 在线一区二区三区四区| 欧美日韩网站| 亚洲手机成人高清视频| 午夜久久美女| 国产午夜精品理论片a级大结局| 亚洲女性裸体视频| 欧美有码在线视频| 国产亚洲欧美一区二区三区| 欧美伊久线香蕉线新在线| 久久嫩草精品久久久精品| 黄色成人91| 亚洲精品国产日韩| 欧美日韩亚洲一区二区| 一区二区三区产品免费精品久久75 | 欧美一区激情| 国产一区二区电影在线观看 | 欧美在线在线| 欧美成人黑人xx视频免费观看| 在线观看视频免费一区二区三区| 最新亚洲电影| 欧美深夜福利| 亚洲欧美日韩成人| 久久手机精品视频| 亚洲三级性片| 午夜天堂精品久久久久| 韩国v欧美v日本v亚洲v| 亚洲精品国精品久久99热一| 欧美性大战久久久久久久| 欧美亚洲一区二区三区| 欧美成人r级一区二区三区| 亚洲免费av片| 欧美一区二区三区四区夜夜大片| 狠狠爱综合网| 一本色道久久综合一区| 国产欧美精品日韩| 亚洲精品免费在线观看| 国产精品久久久久久超碰 | 亚洲狠狠婷婷| 国产精品白丝jk黑袜喷水| 欧美一级网站| 欧美日本高清视频| 亚洲免费视频中文字幕| 久久中文字幕一区| 日韩视频第一页| 久久精品国产2020观看福利| 91久久精品一区二区三区| 先锋影音网一区二区| 在线观看日韩| 香蕉精品999视频一区二区| 影音先锋中文字幕一区| 亚洲一区二区三区四区五区午夜 | 亚洲免费在线精品一区| 免费不卡视频| 制服诱惑一区二区| 免费久久99精品国产自在现线| 在线视频日韩| 久久综合网hezyo| 亚洲在线观看| 欧美理论电影在线播放| 欧美在线一区二区| 欧美日韩中文在线| 亚洲第一在线视频| 国产精品久久午夜夜伦鲁鲁| 亚洲精品一区在线观看| 国产毛片一区| 一本色道久久综合亚洲精品不卡 | 亚洲高清视频一区二区| 欧美一区三区二区在线观看| 亚洲精品欧美精品| 久久深夜福利| 亚洲欧美综合精品久久成人| 欧美午夜片在线免费观看| 亚洲国产精品一区二区第一页 |