104學習精靈

Learn with Shin

Learn with Shin
公開教室關注者 4 人
關注教室
HsuShin

2022/05/31

找出最佳解 - Linear Programming
不論是生活中或是工作中,我們一直都在做各種決定。
今天要搭配什麼樣的衣服?中午要吃什麼?週末要去哪裡玩?要用多少時間花多少錢做哪些事情?會思考甚至煩惱,就是我們想要盡可能的追求最佳解,讓效益最大化。
當然,人生不(一定)會有最佳解,所以才有趣也值得去探索
但是在某種程度上,如果可以量化這些變數,理論上就有可能找到最佳的解答。
一些例子像是:
行銷部門如何在有限預算下決定廣告商來達到最好的效果;
控管供應鏈,決定我這一季要進多少貨,要雇用多少作業員,達到合理最大的產能;
老闆決定要關哪幾家工廠來最佳降低總成本(包含固定營運成本跟運輸成本)
理財顧問幫助客人如何在可接受的風險下選擇投資組合報酬最佳化;
如何在有限的資源下找出最佳化分配(resource allocation optimization),做出最好的決定,是大大小小企業一直不斷追求的目標。
有鑑於此,今天我們要來稍微看一下一個叫做Linear Programming的工具,以及如何搭配Python來使用它。
Linear Programming
Linear Programming,英文可能聽起來像什麼程式,其實不是😅。中文叫做線性規劃。簡單來說是一套數學工具,用來幫助我們在已知限制條件(constraints)下找到目標(objective)的最佳解。前提是問題的本質必須是線形系統(Linear system)以及不等式(Inequality)所組成的(我們就不多討論複雜的數學模型,有興趣的可以在網路上參考)。
基本上簡單的例子像是:
求x + 2y 的最大值,條件是
y <= 50
x + y <= 120
聰明的你可能很快就算出來了,最佳解就是:
x + 2y = 170
x = 70
y = 50
反過來把上面的式子(或稱之為model)用生活的例子帶入的話,可能就像是:
我想要買兩個玩具跟一本書,最多我可以花多少錢?條件是
玩具一個不能超過50元。
一個玩具加一本書不能超過120元
當然,現實中的情況往往是更加的複雜,設計一套模型通常沒那麼容易,加上如果模型的複雜度高(譬如說有很多變數),不但得高度仰賴專業(domain)的判斷,計算上也會變得吃重。
那麼接下來,我們稍稍來看一下如何用Python來幫我們model這些條件及目標,進而計算出最佳解吧~。
例子 1
首先,我們會用到一個第三方library -- pulp......
0 0 429 0
HsuShin

2022/05/31

Graph Database - 圖形資料庫
世上充斥著各種人事物以及其中錯綜複雜的關係。以公司為例子來看好了,有內部組織的上下(左右)關係,部門與部門間的合作關係,業務間的交流關係,甚至是與外部其他公司之間的競合關係。這些「關係」本身都是相當重要的資料,如果今天我想要快速的取得我想要的資料並了解他們之間的關係,該怎麼樣呈現一個這樣的概念呢?
今天想跟大家一起看一個有趣的資料庫類型,叫做Graph Database(圖形資料庫)。
首先,資料庫有分幾種。譬如說一般我們較常見的大概會是Relational Database(一般俗稱SQL資料庫),資料儲存的方式是有Columns跟Rows(就像表格)。相對的另外還有所謂的NoSQL (Not Only SQL)的資料庫,資料可以以Key/Value pair(就像Python的dictionary)形成一個document(譬如說關於單一User的各種資料是一個document)的方式儲存。
今天要來看的Graph Database也是屬於NoSQL的資料庫,但是儲存資料的方式跟上述的很不同。
舉個例來說,我們有看過連續劇中經常會出現的人物關係圖吧?....
0 0 450 0
HsuShin

2022/05/31

Spark - 窺探Big Data
最近這幾年Big Data(大數據)這個詞相當的流行,媒體新聞也會常常用到這個字眼。
當然,我們可以輕易的從網路上取得Big Data的定義,不過還是簡單的講一下,Big Data的Big(大)通常指的是資料的數量、速度以及類型(volume, velocity, variety),根據情況還有其他的特性。基本上當這些要素符合的時候,一般的單一電腦系統往往無法負荷。
因此,我們會利用所謂的分散式運算(distributed computing),簡單來說將資料拆成很多塊,並分給很多電腦來同時處理:一種團結力量大的概念。這些連在一起的大大小小的電腦形成一個所謂的Cluster。
實際上,一般來說自己會碰到Big Data的機會可能不多,大概也不會需要用到Cluster。但是這裡仍然希望給大家作一個參考,如果將來在工作上有遇到這個需求,或許可以提供一個方向。
今天要跟大家一起看的是在這種大數據概念下產生的一個工具(或是架構),叫做Spark(全名Apache Spark),或是更精準一點(因為我們用的是Python)-- 我們要來介紹PySpark(Python + Spark)....
0 0 286 0
HsuShin

2022/05/30

利用Python寄Email
今天要來跟大家介紹如何用Python來寄Email。
大家可能認為寄Email是一件很Personal的事情,為什麼有需要用Python來做呢?
想像我是一個大債主,有很多人向我借錢。我有一個報表,裡面記錄著欠我錢的人的名字,Email,以及欠款金額。涉及隱私問題我們不能將報表寄給所有人,因此必須各別寄Email給該欠債者的人提醒他們。
一般的作法大概就是手動拷貝報表裡面的內容,再一個一個寄Email給大家吧?
但是如果人數很多,而且三天兩頭就得做這件事的話,真的是一件很麻煩的作業。
類似上述的例子大家在工作或生活中可能也遇到過吧?
這時Python就可以派上用場了!
透過Python連結到Email伺服器,並自動化上述的流程,我們可以省下不少時間來追劇(誤
SMTP Server
首先第一步,往往也是令人感到困惑的部分,就是如何登錄到Email提供者的Server(譬如說Google的Gmail)。
我們會用到Python的內建模組 - smtplib來做這件事。
如同HTTP是專門用來傳輸網頁,SMTP(Simple Mail Transfer Protocol)是專門用來寄Email的規範(譬如說訊息的格式,加密,Server間的傳送等等)。而Python的smtplib所提供的功能就是來幫我們搞定這些事情。
每個Email服務提供者有他們自己的SMTP Server的網域名(Domain name)。譬如說:
Gmail - smtp.gmail.com
Yahoo - smtp.mail.yahoo.com
Hotmail - smtp-mail.outlook.com
一般來說,公司內部都會有自己的SMTP Server Domain Name,長得可能像 "smtp.mycompany.com"。要用公司系統寄信的話就必須要取得這部分的資訊(建議跟資安人員確認)。
0 0 169 0
HsuShin

2022/05/30

Decorator - 點綴我們的function
想像一下在萬聖節的時候,我們在門上,桌上,牆上,傢俱等各種物品上放上南瓜妖怪的裝飾品。
藉由這些裝飾品,原本平凡的門跟傢俱,在不需要改造它們本質的情況下,輕輕鬆鬆就增添了萬聖節的氣氛。甚至,我可以想裝飾哪裡就哪裡,就算是廁所🚽也沒問題。
如果,今天沒有這些萬聖節裝飾品,當我想要營造這個氣氛時,我搞不好得叫木工在牆上做個造型,或是把門的樣式都改掉,不用說廁所的難度又更高了。
聽起來很不符合經濟效益,是吧?所以裝飾品是很好用的
在Python中,有一個類似的概念,叫做Decorator。
它能讓我們去對指定的function增添一些東西,甚至是改變它的行為,而不需要去動到function本身。
聽起來好像有點神奇嗎?那麼,我們來看一個簡單的例子吧。
假設我有下面三個簡單的function:
這三個function分別return不同的字串:hello、hi、yo
今天,如果說我想要每個function的return值都加上一個南瓜的表情符號....
0 0 101 0
HsuShin

2022/05/30

時間序列資料 - Time Series
今天要跟大家簡單看一下如何利用Python處理跟時間有關的資料。
Time Series(時間序列)是一種資料的類型。簡單來說資料由一定的時間間隔方式呈現,譬如說每月的銷售金額、每天的股票價格、或是每個禮拜的網路造訪者流量,都屬於Time Series的資料。
遇到Time Series資料,當然必須要知道如何跟日期時間打交道....
0 0 105 0
HsuShin

2022/05/29

如何利用Python處理PDF
今天要跟大家一起看一下工作或生活中都常常會接觸到的 -- PDF檔案。
PDF(全名Portable Document Format)的檔案中除了文字以外,可以有圖片,表格,甚至是動畫 -- 相當的賞心悅目。除了方便在網路上傳送,經常看到譬如說個人履歷表、銀行交易紀錄、公司財務報表、海報、廣告文案等等頃向會印出來的文件也都會使用PDF。
只是,美麗的東西往往都是帶刺的🌹。這些豐富的要素,使得處理PDF的資料具有相當程度的挑戰性。
大家有沒有曾經為了擷取PDF中的內容而氣到內傷的經驗?如果單純手動Copy & Paste裡面的內容,往往需要做不少後製的格式調整。
PDF某種程度是設計讓你無法輕易去更改,它就像一張畫布的概念。
0 0 65 0
關於教室
Python and data analysis
學習發起人
HsuShin
0 回答 33 分享 1 教室
發起人簡介
目前還沒有關於老師的更多介紹 ...更多