Uncategorized

Python機器學習EP. 5 訓練跟測試的過程

哈囉,大家好,我是Teresa,上週的筆記提到機器學習似乎不可行,但當統計上的資料還有演算法的選擇是「有限」個時,機器學習還是可行的。 那到底為什麼機器學習可以學到東西?當假說函式集合是無限大的時候,到底會發生什麼事情? 複習機器學習的流程圖,一開始從資料出發,有一個機器學習的演算法,透過資料和它所看到的假說集合,從裡面選擇一個最終的假說函式。 上次加了一個假設是:我們訓練的資料跟最後測試假說的方法都來自同一個分配。 Ein是指在資料上假說的表現;Eout是指未來我們還沒有看過的資料在假說上的表現,我們用同一個分配來描述。 一、假說函數不多的情況 假如假說函式集合不多、資料量又夠多,不管演算法怎麼選擇假說,Ein跟Eout兩者的表現都會長得很像。如果都長得很像,那我們當然要選擇一個Ein最低的,很接近0。因為如果Ein很接近0,那個Eout很大概率機率會很接近0,這樣就達到了學習的效果。 從上述的說明中,機器學習可以分成兩個步驟: 第一個步驟是訓練,訓練是指演算法在跑的時候,我們要確保資料上的表現(Ein)很接近0。 但訓練還不夠,我們要確保這個假說函式在測試未來未知的資料上,Ein跟Eout也很接近。 二、回顧一下,前四集筆記中我們學到的概念: Ep. 1:提到機器學習想做的事情是有個未知的目標函式,希望演算法能找到假說函式,能和目標函式非常接近,錯誤率要越小越好,(也就是Eout要很接近0)。 Ep. 2:希望機器學習在我們已知的資料上做的盡量好就好,(也就是Ein要很接近0)。 Ep. 3:機器學習是在很特定的設定下做,像是批次的資料、監督式學習、二元分類。 Ep. 4:在假說函式有限個的狀況下,Ein跟Eout會很接近。 機器學習實際上拆成兩個問題: 第一個問題是Ein跟Eout會不會很接近? 第二個問題是如果第一個問題成立,怎麼讓Ein越小越好。 三、假說函式集合有限的數量 那在假說函式集合有限的情況下,這個有限的數量(M)是多少,跟這兩個問題有什麼關係? 這個數量M有兩種可能性,一種是相對小的數字,另一種是相對大的數字。…
Teresa
January 13, 2021
Uncategorized

Python機器學習EP. 4 機器學習是不是可行的呢?

前言 大家好,我是Teresa,這集的學習筆記是要讓大家思考機器學習到底可不可行?那就讓我們開始吧! 先來做個小測驗吧!若給你以下六張圖,它們分別被歸類為-1或+1,若再給你第七張圖,請你觀察前六張圖片來給定一個規則,你會將第七張圖歸類為+1或-1呢? 若你的答案是+1,其實答案是+1,因為前三張圖片的最左上角都是黑色的,後三張圖片的左上角是白色的,因此這題的規則是左上角的格子若是黑色就是-1,若是白色就是+1。回到第七張圖,它左上角是黑色的,因此答案是-1。 若你的答案是 -1,其實答案是+1,因為前三張圖片沒有對稱,後三張圖都是對稱的,因此這題的規則是有對稱的為+1,沒有對稱的為-1。回到第七張圖,它是有對稱的圖形,因此答案是+1。 其實還有更多隱藏的規則。發現了嗎?不同人所看到的規則都不同,因此不管你說的答案是哪個,都可能是錯誤的。這樣看起來機器學習是不是不可行呢? 如果從數學的角度來看另一個例子,若有3個位置而每個位置都只能有0或1,給定五筆資料,那你會怎麼決定這題的函式g呢? 輸入 輸出 0, 0, 0 +1 0, 0, 1 -1 0, 1, 0 -1 0, 1, 1…
Teresa
January 9, 2021
Uncategorized

Python機器學習EP. 1 初步認識機器學習

前言 大家好,我是Teresa,前陣子因為一場線上小聚,讓我開始正式接觸機器學習,參與前和參與後都順手寫了一篇文章,連結在此附上,在開始閱讀此篇之前,可以先看看你有沒有理解文章中提到的概念。 機器學習從零開始-簡單認識基礎概念 | Teresa初學者筆記 機器學習的介紹與應用-Python主題小聚直播回顧 總之,在這場線上小聚過後,Teresa就決定要更深入的接觸機器學習,於是在Coursera上找了一堂基礎的機器學習線上課程,之後的筆記都會環繞在這堂課上,那就讓我們開始吧! 每一個機器學習的使用者應該要知道什麼? 哲學上機器學習的思想 數學上的工具 演算法的設計 它們的使用:包含什麼時候可以使用、為什麼可以使用、如何使用、如何會變得更好 什麼時候可以使用機器學習? 在了解什麼時候可以使用機器學習之前,不妨先思考看看什麼是「學習」? 以人類的角度,學習會從「觀察」出發(通過我們的五感)進而學習「轉化」成一項技巧 因此機器學習便是用電腦做為「學習主體」來「模擬」人類學習的過程 Note:觀察(資料)->機器學習(演算法)->技巧 技巧指的是「增進」某一方面的表現。 結論:機器學習的過程是從資料出發經過電腦的計算最終得到某種表現的增進。 若你想達成上述的目的,便可以使用機器學習。 為什麼要使用機器學習? 當我們遇到一個問題想要用程式解決的時候,有些問題單靠人力試圖將規則一項一項的條列出來是非常困難的。 舉例來說:如何辨識一棵樹?我們很難用語句完整地把每一項樹的特徵描述出來。 因此,我們讓機器透過「觀察」來分析辨識。 機器學習的應用…
Teresa
December 2, 2020
Uncategorized

Python初學總整理 第9講:Numpy函式庫

嗨,大家好,我是Teresa,這集想來和大家介紹在資料分析、機器學習領域中很經典、必定會用到的函式庫-Numpy,目的主要是做數據的處理,但內容不會涉及統計的理論和延伸,只會做一些基礎的功能介紹和簡易的實作程式碼提供給大家。 什麼是Numpy? Numpy是一個免費且開源的Python函式庫,專門用來處理陣列,由Travis Oliphant於2005年創建,但Numpy的前身是Numeric,是由Jim Hugunin和其他協作者共同開發,Numpy結合另一個同性質程式庫Numarray的特色,並加入了其他擴充功能。原始碼在這個網站中:https://github.com/numpy/numpy 為什麼使用Numpy? En kral yeşilçam porno videoları izlemek için saplamaca'yı ziyaret edin. En güzel yeşilçam pornoları bu sitede 在Python中,我們也有list來存放清單,但其實處理速度很慢,Numpy處理陣列的速度比list快50倍。原因是Numpy會將資料儲存在記憶體中的一個連續位置,可以高效率的找到他們的位置、並使用資料。 安裝Numpy pip…
Teresa
November 11, 2020
Uncategorized

Python初學總整理 第1講:Python簡介

前言 2020年TIOBE程式語言排名,第一名是Java,第二名是C,而第三名的Python是從2019年開始超越C++,也就是說Python成長快速且越來越熱門。 資料來源取自:HelloGitHub 早期的程式語言為了讓電腦看懂並發揮它十足的能力,讓程式語言變得艱澀難懂。 Python的出現受到許多人的喜愛,到底Python有什麼吸引人的特點呢?它又能拿來做什麼呢?讓我們繼續看下去吧! Python簡介 Python的創始人是Guido Van Rossum,在1989年聖誕節期間的阿姆斯特丹,他為了打發時間,決定開發一個新的程式,來做為ABC語言的後繼,有趣的事情是之所以會用Python(原為蟒蛇之意)取名,是源自於他喜歡BBC電視劇——Monty Python馬戲團。 ABC語言是一種程式語言與編程環境,語言的目的是在教導非專業的程式設計師學習如何開始寫程式,Python的創始人曾為ABC系統工作了好幾年,以他的視角來看,ABC語言既優美又強大。但他為什麼要另外開發Python呢?他認為ABC語言沒有成功的原因,追根究柢是因為程式碼非開放,因此他決定Python要避免這樣的錯誤,以現今的結果來看,開發過程漸趨透明,社群也對開發進度做出了極大的貢獻,這樣的決定確實取得了非常好的成果。 Python版本: Python v2.7(2020年結束維護): 實現完整的垃圾回收且支援Unicode,可以將未來不會被存取的程式回收,歸還記憶體空間,減少程式的錯誤外,也能減輕程式員的負擔。 Python v3.5(2008年12月3日發布) Python v3.8(最新版本): 從3.0開始Python的原始碼並不完全相容,因此如果從現在開始學Python的話,可以直接從最新的版本開始學。但最重要的事情還是:了解自己想要用程式解決什麼樣的問題,找到相對適合的程式語言。 Python特點 優點: 簡單易學易用:Python語法簡單易讀,就像閱讀通用的語言,因此當程式出現錯誤時,大部分只要專注於解決問題的邏輯本身,可以省下檢查語法錯誤的時間,但又不會喪失Python對語法的嚴格要求。 免費開源:Python開放原始碼,可以自由的copy套件、閱讀、修改原始碼,把前人的成果用於新的成品中。 可移植性:由於Python開源的特性,它不需要經過修改就能在不同平台(Windows、MacOS、Linux……)上運行。…
Teresa
September 15, 2020
Uncategorized

Python 常用時間數據類型擴充站

前言 此篇文章將會簡單補充 Python 中時間模組的應用,希望能用最短的時間讓新手們 pick up Python 的時間相關模組~ 大綱 時間模組:處理時間格式化需求。 日曆模組: datetime模組:獲取當前時間使用。 一. 時間模組 Python中導入時間模組,語法如下: 範例運作:https://repl.it/@dreamline2/time-module#main.py 獲取當前時間戳 https://gist.github.com/Celia-code/a2f32929b5e63be580b1e19eb244b736 2. 獲取時間元組:獲取當前時間並以元組方式呈現 https://gist.github.com/Celia-code/bb82846b356756e440861fdfcc6f0fb7 3. 獲取格式化時間:時間戳變成格式化時間:time.ctime( ) https://gist.github.com/Celia-code/9a2e1938bc050ba6a65045e39e6a0961…
celia
May 15, 2020
Uncategorized

Python 常用數據類型 – 字符串

前言:什麼是字符串? 在Python中,使用單引號或者雙引號括起來的,就是字符串。但如果開頭使用的是單引號,那麼結尾也必須使用單引號,前後需一致。 字符串也可以用六個單引號或雙引號括起來。 在Python中,字符串分為兩種類型: ♦ str : 是unicode字符串 https://gist.github.com/Celia-code/2312c5571cb1165f7ea7f6fe580482b4 ♦ bytes: 經過編碼後的字符串,是一種字節符,適用於保存磁盤上或者是網路上傳輸。 大綱 字符串拼接 字符串格式化 字符串下標&切片操作 轉義字符&原生字符串 常見操作 一. 字符串拼接 使用加號形式 https://gist.github.com/Celia-code/d2917bf93561cb4f476c2b4a2cea9f60 2. 使用格式化形式 https://gist.github.com/Celia-code/0a1c65666a28fdbb0fc950cfa8e1c4ea…
celia
April 23, 2020
Uncategorized

Python循環與嵌套

一.前言: 本文內容將會介紹Python 循環中,介紹循環中的嵌套以及pass語句運用,並以代碼作為範例說明。 二.大綱: Python循環與 if 的嵌套 Python循環與循環間嵌套 pass語句用法 實例運用 三.Python循環與 if 的嵌套 在for / while 循環中包含 if 條件判斷式,將其稱為循環中的嵌套。 代碼範例: https://gist.github.com/Celia-code/73b85c62eb3223516cb6708cffb0374e 代碼說明: for 迴圈遍歷 1~100…
celia
April 20, 2020
Uncategorized

Python循環語句打斷 : break&continue命令

一.前言: 本文內容將會介紹Python 循環中,break&continue命令的應用及差異之處,並以代碼作為範例說明。 二.大綱: break命令 continue命令 實例運用 三.break命令: 迴圈執行時,如果要中途結束執行,可使用 break 命令強制離開迴圈。 其代碼範例為: https://gist.github.com/Celia-code/15778712cfcbb719aa4c8d5a8597113d 代碼說明: for 迴圈由可循環對象 1~10 間取值。 迴圈執行時,由於i = 1 不符合 i == 7的…
celia
April 16, 2020
Uncategorized

Python循環語句 : while循環

一.前言:  本文內容將會介紹Python While循環語句定義及語法,文章嵌入代碼示範如何使用。   二.大綱: while 循環語句 案例:輸入用戶資料 for與while間的選擇   三.while 循環語句 在程序編寫的過程中,在循環沒有固定次數的情況,會選擇使用while循環。 其基本語法結構為: while( 條件式 ): #「( 條件式 )」的括號可省略 要執行的代碼 條件式 = True  → 執行程式區塊。…
celia
April 13, 2020