K-means 筆記

概念 K-means 的核心概念為,每個資料點到其所屬的群集中心的距離要是最短的,也就是要最小化上圖式子的值。而 K-means 裡面的 K 為假設的分群數,也就是 centroid(分群中心點) 的數量 其運作原理是初始化 k 個 centroid,並透過反覆下列兩個步驟 將距離其最近的點納入其群集 利用群集內的點重新計算該群集的 centroid 來持續調整 centroid 的位置,直到其結果收斂為止,如圖: 基本的 K-means 執行流程 給定 K 個 centroid,並隨機分佈各個點 計算每個資料點跟各個 centroid 的距離,並歸類為距離最近的 k 分群 用每個分群的點重新計算該分群 centroid 的位置 重複步驟 2,3 直到滿足結束條件,例如: centroid…

Read this article

Third way to use block argument

There are two common ways to use block argument in a method. First is using &block in arguments, and treat it as a Proc object. def foo(&block) block.call end > foo { 1 + 1 } #=> 2 Another way is using yield def foo yield end > foo…

Read this article

Featured

Docker & Circle CI

使用 Docker 有許多好處,也越來越多公司希望直接部署 Docker 上機器,藉此減少對 production 環境設定的需求,而我們愛料理也不例外。剛好我們使用的 CircleCI 有支援 Docker,因此我們便用 CircleCI 來壓 image 並上傳到 DockerHub,而這篇文章便會說明一些我們使用 CircleCI 跟 Docker 上遇到的問題跟解法 在 CircleCI 使用 docker CircleCI 有直接支援 Docker,只需要在 circle.yml 的 services 中加上 docker 就好 machine: services: - docker 這樣就可以在 CircleCI 裡面跑 Docker 相關的指令了 壓…

Read this article

Apriori 筆記 2

上一篇 Apriori 筆記 1介紹了 apriori 的基本觀念跟運作方式,這篇則會針對下面兩個執行細節做更詳細的說明: 有效率的產生候選集 增加支持度計算的效率 有效率的產生候選集(Candidates) 基本要求 應避免產生不必要的候選集,若一候選集的子集合(subset)至少有一個是非高頻項目,則依據支持度的反單調性,此候選集就應該被刪除 必須保證候選集是完整的,也就是說候選集應該包含所有高頻項目 同樣一個候選集不應該重複產生,造成無意義的運算 產生方法 窮舉法(最笨的方法) 窮舉法顧名思義是把所有可能的組合都列出來,再刪除不必要的候選集。舉例來說,假設我們要產生長度為三的候選集,而一共有六個交易項目,那產生的結果就會是 C(6, 3),也就是 20 個。此外我們還需要刪除不必要的候選集,因此又有大量的候選集要被檢查,造成整個方法的複雜度會是O(d * 2^(d-1)) F(k-1) X F1 法 這種方法是利用一個 高頻…

Read this article

Tips for Contributing Open Source Projects (for beginners)

A few months ago, I think contributing open source project is a very hard task, and only those senior developers can do it. I believe there are many people have the same thought (including you). But after contributed to several projects, I think the main difficulty is to find projects…

Read this article