原创 最壞情況爲線性時間的選擇算法之Python實現

算法導論第三版,9.3 import random import math #returns the number of elements that smaller than x #the input is A[p...r] in

原创 找出數組X和Y中所有2n個元素的中位數

算法導論第三版,9.3-8 算法: 如果兩個數組長度爲1,選出較小的那個一個 否則,取出兩個數組的中位數。 取有較大中位數的數組的低區和較低中位數數組的高區,組合成新的長度爲n的數組。 找出新數組的中位數 思路: 既然用遞

原创 尋找第二小元素

《算法導論》第三版9.1-1 把n個元素分成一對對,每一對進行一次比較得出一個較小值,這是第一輪篩選,以此類推,一共進行⌈ lgn⌉ 輪篩選,n-1次比較。第二小的元素一定在某一輪篩選中與最小的進行比較被PK掉了,但是不能確定是

原创 Python學習筆記:對象,值和類型

本篇參考Python官方文檔,3. Data model — Python 3.5.2 documentation 下面是原文翻譯過來的: 對象 是Python對數據的抽象。Python程序程序中所有的數據都用對象或者對象之間的

原创 Python學習筆記:iterator和iterable

定義: 一個迭代器(iterator)是一個管理一系列值的迭代的對象。如果一個變量i指代一個迭代器對象,那麼每次調用內建函數next(i)就可以產生一個這一系列值的下一個元素,如果StopIteration異常發生則意味着沒有更

原创 指示器隨機變量,算法導論5.2

指示器隨機變量當A發生時爲1,否則爲0.指示器隨機變量也是變量,也具有隨機變量的性質,所以我們可以計算一個指示器隨機變量的期望值。設一個指示器隨機變量爲X,則X = 0,1。有 E(X) = 1xP(X=1) + 0xP(X

原创 Python:列表作爲參數

簡單的看下三種情況: def changeList(l): l[0] = 5 def changeList1(l): l = [] def changeList2(l): l[:] = [] a

原创 論文閱讀:《神經機器翻譯和序列對序列模型:一個教程》上

這是CMU的助理教授Graham Neubig的一篇tutorial的翻譯,原文來自Neural Machine Translation and Sequence-to-sequence Models: A Tutorial。本文只取其中

原创 Gale和Church的句對齊算法解析

Gale和Church在1993年提出了一個基於長度進行句對齊的算法,並在附錄裏公開了C源代碼。這篇論文相當經典,以至於之後的關於句對齊的論文大多數要引用它。論文的題目是《 A Program for Aligning Sentences

原创 循環神經網絡RNN及其變種LSTM

首先說一句,對於理解RNN這個概念,上策是先從數學角度理解,然後再畫圖理解。在這個前提下,一切上來就放圖的書、論文、教程都是耍流氓。 循環神經網絡是一種神經網絡,那數學上神經網絡是什麼?是函數。普通神經網絡可以抽象成輸入層,隱層,輸出層

原创 論文閱讀:《神經機器翻譯和序列對序列模型:一個教程》中

4 對數線性語言模型 本節討論另一種語言模型:對數線性語言模型。它的計算方法跟上面提到的基於計數的語言模型很不同。 4.1 模型公式化 對數線性語言模型也是計算給定前幾個詞的條件下下一個詞的條件概率,但是方法不一樣,基本分爲以下幾步:

原创 論文閱讀:《Neural Machine Translation by Jointly Learning to Align and Translate》

這是2015年的一篇會議論文,作者是Dmitry Bandana,KyungHyun Cho,Yoshua Bengio。本文最重要的貢獻就是提出了attention機制。下面我先總結每段的要點,然後適當添加自己的解讀。 ABSTRAC

原创 周志華《機器學習》習題4.3

爲表4.3中數據生成一棵決策樹。 代碼是在《機器學習實戰》的代碼基礎上改良的,借用了numpy, pandas之後明顯簡化了代碼。表4.3的數據特徵是離散屬性和連續屬性都有,問題就複雜在這裏。話不多說,看代碼。 先定義幾個輔助函數,正常

原创 Python實現k-means算法

這也是周志華《機器學習》的習題9.4。 數據集是西瓜數據集4.0,如下 編號,密度,含糖率 1,0.697,0.46 2,0.774,0.376 3,0.634,0.264 4,0.608,0.318 5,0.556,0.215 6,0

原创 Python學習筆記:作用域和命名空間

本篇參考官方文檔: The Python Tutorial 9.2: Python Scopes and Namespaces 這節非常重要,許多錯誤都是對作用域和命名空間不熟悉導致的。先看看文檔裏對命名空間(namespace)的定義: