Download presentation
Presentation is loading. Please wait.
Published byTommi Lehtonen Modified 5年之前
1
第四次课后作业 有以下函数: Y = λg.(λf.g(f f)) (λf .g(ff)) 试证 YF = F (YF)[F是任意函数]
2. 利用λ规约法则将下式化到最简 (λp.λq.λr.p q r)(λp.λq.p q r).
2
有以下函数: Y = λg.((λf.g(f f)) (λf .g(f f))) 试证 YF = F (YF)[F是任意函数] 证明: Y F = λg.((λf.g(f f)) (λf .g(f f))) F = (λf.F(f f)) (λf .F(f f)) = F((λf .F(f f))(λf .F(f f))) = F(Y F)
3
2. 利用λ规约法则将下式化到最简 (λp.λq.λr.p q r)(λp.λq.p q r) =(λp.λq.λr.p q r)(λq.r q) [β规约] =(λp.λq.λw.p q w) r [η规约,α换元] =λq.λw.r q w [η规约] =λq.r q [η规约] =r
4
第三次课后作业 3. 使用Scala语言实现KNN( k-NearestNeighbor )算法; 请在以下步骤中使用函数式编程范式实现:
距离计算; 按距离增排序,并选择距离最小的前k个点。 计算前k个点所在的label的出现频率;
5
KNN算法描述: 1)计算测试数据与各个训练数据之间的距离; 2)按照距离的递增关系进行排序; 3)选取距离最小的K个点;
6
object kNN { def getGroup(): Array[Array[Double]] = { return Array(Array(1.0, 1.1), Array(1.0, 1.0), Array(0, 0), Array(0, 0.1)) } def getLabels(): Array[Char] = { return Array('A', 'A', 'B', 'B') def classify(inX: Array[Double], dataSet: Array[Array[Double]], labels: Array[Char], k: Int): Char = { val sortedDisIndicies1 = dataSet.map { x => val v1 = x(0) - inX(0) val v2 = x(1) - inX(1) v1 * v1 + v2 * v2 }.zipWithIndex.sortBy(f => f._1).map(f => f._2) var classsCount: Map[Char, Int] = Map.empty for (i <- 0 to k - 1) { val voteIlabel = labels(sortedDisIndicies1(i)) classsCount(voteIlabel) = classsCount.getOrElse(voteIlabel, 0) + 1 classsCount.toArray.sortBy(f => -f._2).head._1 def main(args: Array[String]) { println(classify(Array(0, 0), getGroup(), getLabels(), 3))
Similar presentations