原创 【Scala】尾遞歸優化

以遞歸方式思考 遞歸通過靈巧的函數定義,告訴計算機做什麼。在函數式編程中,隨處可見遞歸思想的運用。 下面給出幾個遞歸函數的例子: object RecursiveExample extends App{ // 數列求和例子

原创 【機器學習中的數學】函數空間

數學的空間 數學中的空間概念是要有研究工作的對象和遵循的規則。其中,包含元素和結構。 如線性結構中,定義加法和數乘;拓撲結構中,要有距離、範數、開集三要素。 距離 範數是具有“長度”概念的函數。 距離、範數可以指向量的距離,我

原创 【機器學習基礎】隨機森林算法

引入 我們回顧一下之前學習的兩個算法,Bagging算法中,通過bootstrapping得到不一樣的數據,通過這些數據送到一個基本算法之後,得到不同的g,最後對這些g取平均得到G;決策樹算法中,通過遞歸方式建立子樹,最終得到一棵

原创 【Scala】Vector內部結構與內存共享原理

Scala不可變集合 Scala不可變集合的設計目標是提供高效又安全的實現。這些集合中的大部分都是用高級技巧來在集合的不同版本之間“共享”內存。其中較長使用到的是Vector和List。 在一般的編程任務中,不可變集合有很多超出可變集合

原创 【Scala-ML】如何利用Scala構建並行機器學習系統

引言 在學習Scala的過程中,我發現其在構建大規模分佈式計算系統上有與生俱來的特質。其豐富的類型系統可以幫助編程設計提供很好的信息隱藏和抽象,其monoids和monads概念利用Scala高階函數實現計算並行和數據處理流水線,其Act

原创 Spark與Scala學習

Spark學習 配置Spark源碼閱讀環境 Spark的Standalone模式安裝部署 Spark生態和Spark架構 Spark基本概念 彈性分佈式數據集RDD概述 Spark應用執行機制 RDD操作詳解1——Transformat

原创 【Scala類型系統】自身類型(self type)引用

定義 特質可以要求混入它的類擴展自另一個類型,但是當使用自身類型(self type)的聲明來定義特質時(this: ClassName =>),這樣的特質只能被混入給定類型的子類當中。 如果嘗試將該特質混入不符合自身類型所要求的類時,

原创 本博客系列文章導航

機器學習基礎系列文章 機器學習基礎引入 機器學習算法的分類 生成模型和判別模型 從感知機模型說起 理解爲什麼機器可以學習——PAC學習模型 理解爲什麼機器可以學習——Hoeffding不等式 理解爲什麼機器可以學習——VC理論 VC維與

原创 【Scala類型系統】隱式轉換與隱式參數

隱式轉換 隱式轉換是使用implicit修飾的帶有單個參數的普通函數。這種函數將自動應用,將值從一種類型轉換爲另一種類型。 舉例說明: 我們想將整數n轉換爲分數n/1, 定義implicit def int2Fraction(n

原创 【Scala類型系統】類型參數化和變化型註解

引言 類型參數化(Parameterized Types)可以用來編寫泛型類和特質,比如定義Set[T],這使得我們可以創建諸如Set[String]的類型。而變化型註解(Variance Annotation)定義了參數化類型的繼承關係

原创 【函數式】純函數與替代模型

純函數 一個函數在程序執行的過程中除了根據輸入參數給出運算結果之外沒有其他的副作用影響,我們可以把這類函數稱爲“純函數”。純函數由於不依賴外部變量,使得給定函數輸入其返回結果永遠不變,比如整數的加法函數,它接收兩個整數值並返回一個整數值,

原创 【函數式】Monads模式初探——Monoids

Monads是什麼 知乎裏有關於什麼是Monad的問題討論,而在維基百科中也有關於Monad的釋義。作爲初次接觸到Monads概念,難免會有些暈頭轉向,也難免會有些畏懼(因爲Monads和數學中的範疇論有密切關係),但是Monads又是如

原创 【Scala】抽取器

引子 由於樣本類和構造器模式相關聯,所以在模式匹配中常使用樣本類做數據的解構和分析。 有些情況下,或許希望能夠在不創建關聯的樣本類的前提下編寫出類似的模式匹配,此時抽取器(Extractor)可以用來定義與對象表達解耦的模式。 抽取em

原创 【函數式】Monads模式初探——Monad概念

title: 【函數式】Monads模式初探——Monad概念 date: 2016-03-01 10:12:21 category: Functional Programming tags: - Scala - Function

原创 【函數式】Monads模式初探——Option Monad

Option Monad Scala中的Option是一個Monad實現。 Option的簡化版定義如下: sealed abstract class Option[+A] { def isEmpty: Boolean def