您現在的位置是:首頁 > 攝影首頁攝影
學 Python 沒找對路到底有多慘?| 碼書
raw input什麼意思
作者 | 非同步圖書
責編 | 胡巍巍
本文內容經授權摘自《Python機器學習》
方法不對,努力白費!
多少程式設計師想轉行AI,卻倒在了學Python的歧路上?
都知道做AI賺錢多,為何你總是找不對門路?
眾所周知,目前機器學習紅遍全球。男女老少都在學機器學習模型、分類器、神經網路。
你也想成為一份子嗎?但你該如何開始?以及到底該如何定義機器學習?到底什麼樣的教材,才是真正適合你的?今天的文章一定對你有幫助!
什麼是機器學習?
從出生的那天起,我們就一直在學習中度過。
隨著逐漸的成長,開始學習如何走路;透過傾聽周圍人的談話,學習並嘗試模仿;透過學習不同單詞的意思,使得在需要時懂得該如何進行表達。
同時也開始區分事情的好壞。例如,在第一次靠近火源時,會因灼熱而後退,從而明白要與火源保持一定的距離。
那麼,現在思考一下計算機的工作原理。
計算機可以在1s內遵循人類的指示處理數百萬條指令,並返回結果;它可以執行人類描述的任務,但是卻不能自行決定。
而機器學習此時就可以發揮作用了。如果給予計算機像人類一樣的思考能力,那會發生什麼呢?
可以用計算機能理解的方式,給出每一天的任務令其進行計算,還可以建立一些模型來幫助計算機在將來採取行動。
人類從經驗中學習知識,計算機則遵循指令執行任務。然而,其實還可以直接向計算機提供經驗讓其學習併為行動做準備。
目前我們是以結構化的方式定義經驗。因此,我們將計算機從資料(經驗)中進行學習的過程稱為機器學習(Machine Learning)。
以買香蕉為例。你的母親需要你去市場上買一些香蕉,同時她告訴你鮮黃色的香蕉很好吃。
你到一個水果商那裡,開始按照母親的建議挑選香蕉。你買了20根香蕉後就回家了,然而回家後你注意到有些香蕉的味道並不像其他的那樣好。
事實上,有5根香蕉是壞的。你逐個拿起香蕉並開始作出假設。 20根香蕉中有12根大香蕉和8根小香蕉。
這8根小香蕉都很美味,但是大香蕉就不一樣了,在12根大香蕉中有5根味道不如預期。
你已經掌握了挑選香蕉的知識。第二天,當你到達市場時,注意到有個水果商在打折出售香蕉,這些香蕉和昨天的不同,它們的皮帶有一些綠色。
從這裡買完香蕉回到家後,根據之前的經驗將每一根香蕉分為好與壞,會發現大的綠色香蕉很好吃,但是小的綠色香蕉的味道不如其他的好。這樣,你就學會了新規則。
你開始將自己看作是香蕉專家。有一天,你不得不去另一個城市參加表親的婚禮。
現在你驚訝地發現這裡所有的香蕉都很小,但是味道卻都很好。在這裡你瞭解到來自這個區域的香蕉是暢銷商品。
現在你確實已經是一名專家了。但如果你的姐姐很長時間沒有回家了,並且她喜歡石榴而討厭香蕉。你要怎麼辦呢?為了找到美味的石榴,你需要重新開始你的學習。
現在這個任務就可以由機器學習負責指引計算機完成了。可以使用資料點的形式向計算機提供知識。資料點的屬性稱為特徵(Feature),這裡的特徵是香蕉的大小(小、中、大)、顏色、產地等。
輸出(Output)就是味道(好或者壞)。將這些資料輸入到機器學習程式中,就可以讓計算機學習如何區分香蕉的好與壞。
機器學習演算法是一種根據經驗來給予你決策能力的智慧演算法。
為什麼選擇Python
Python在資料科學家中是非常受歡迎的程式語言。
第一,它免費且易學,不必為了小任務而浪費大量注意力;
第二,它是面向物件的語言,這也是其被大型開發者社群支援的原因;第三,巨大的開源庫支援。 Python具有相當數量的開源庫,能夠更迅速地實現資料科學和機器學習解決方案,而無須從頭開始編寫每一個演算法。像Pandas、 scikit-learn、 SciPy、 NumPy、 Keras這樣的庫對於快速實現機器學習演算法非常有用。
首先,透過一個例子瞭解如何使用程式語言來解決現實世界的問題。
假設舉辦一個聚會。你為每個進入聚會的人分配一個唯一的1~100之間的號碼。現在聚會結束了,你宣佈了一個訊息。
“會從1~200之間獲取一個隨機數。如果有兩個人的號碼之和與這個數字相等,就會獎勵這兩個人。”
現在瞭解到,已經向x個人分配了號碼。如何確定能否給其中兩個人獎勵呢?
可以嘗試使用Python來解決這個問題。首先,從列表中獲取輸入資料。
1numberList = list([43,23,1,67,54,2,34,56,23,65,12,9,87,4,33])
現在選擇一個隨機數並將其儲存在一個變數中。
1sumSelector = raw_input()
為了解決這個問題,必須先對資料進行排序。在Python列表中排序很簡單,可以透過sort函式來完成。
1numberList = numberList。sort()
透過上述語句,將排序後的數字賦值給變數。現在使用兩個指標:一個指向開始處(前指標);另一個指向結束處(後指標)。
檢查兩指標所指變數的和。如果和小於給定值(意味著當前的總和小於所需的總和),前指標向前移動一步並再次檢查;
如果和大於給定值(意味著當前的總和大於所需的總和),將後指標向後移動一步並再次檢查。
無論在任何位置,如果當前的總和等於要求的總和,便可以說,存在兩個人的數值之和與給定的數值相同,需要給予獎勵;
如果兩個指標相交併且仍然沒有達到所需的總和,則可以聲稱並不存在兩個人的數值之和與給定的數值相等。
以下是完整的解決方案。
1defisPrizeGiven(numberList,sumSelector):
2
3sumOfTwo = sumSelector
4
5 i=0
6
7 j = len(numberList) -1
8
9if(i>=j):
10
11returnFalse
12
13while(i<=j):
14
15 currentSum = numberList[i]+numberList[j]
16
17 print(i,j,currentSum)
18
19if(currentSum==sumOfTwo):
20
21returnTrue
22
23if(currentSum>sumOfTwo):
24
25 j=j-1
26
27else:
28
29 i=i+1
30
31returnFalse
為獲得所需答案,必須向函式傳遞排序列表和給定的數值(即兩數值的期望和)。
1if (isPrizeGiven(numberList,sumSelector):
2print(“No Escape。 Give Prize to Everyone”)
3else:
4print(“You Saved Yourself!!”)
即使現在不能理解此程式碼,也不要擔心。接下來我們還會對這段程式碼進行解析,並介紹程式設計語言的基本原理。
本文摘自《Python機器學習》
《Python機器學習》
作者:[印]阿布舍克·維賈亞瓦吉亞
ISBN 978-7-115-50135-6/
此書為Python機器學習實用教程,Python 3程式設計師晉級必備圖書,本書提供配套資源可供讀者下載。
內容提要:
《Python機器學習》透過解釋數學原理和展示程式設計示例對機器學習進行了系統、全面的解析。
《Python機器學習》共分為12章,內容涵蓋了機器學習以及Python語言的基礎知識、特徵工程的概念與操作技術、資料視覺化技術的實現、監督學習及無監督學習演算法、文字分析、神經網路和深度學習、推薦系統的構建方法以及預測處理時間序列的方法等。
閱讀本書能夠加深讀者對機器學習的認識和理解,從而達到理論與實踐相結合、學以致用的目的。
喜歡這本書嗎?
CSDN聯合非同步圖書,
針對CSDN使用者推出限時7.5折的優惠價。
買一本書,
不過是兩杯咖啡的價格,
但如果掌握了本書的精華,
或可讓你升職加薪!
上進的你,
動動手指趕快把新知識納入囊中吧!
掃碼就可購買哦!