原创 【統計學習方法】隱馬爾可夫模型(HMM) Python實現

前言 代碼可在Github上下載:代碼下載 隱馬爾可夫模型在自然語言處理等各領域中,經常被用來處理標註問題。 隱馬爾可夫模型由初始狀態概率向量ππ 、狀態轉移概率矩陣A和觀測概率矩陣B決定。其中ππ 和A決定狀態序列,B決定觀測序列。

原创 【自然語言處理】RNN文本生成Python實現

前言 由於RNN具有記憶功能,之前文章有介紹RNN來實現二進制相加,並取得了比較好的效果。那這次本文使用RNN來進行古詩生成。 數據集 數據集就是我們的古詩了,每行都是一首古詩,並且以格式”題目:古詩”。 首先需要創建一個詞典,詞典

原创 【統計學習方法】感知機Python 原始形式實現

代碼可在Github上下載:(https://github.com/q13030880/MachineLearning)機器學習三要素:模型,策略,算法。今天要介紹的模型是感知機\[f = sign\left( {\sum\limits_

原创 【統計學習方法】 邏輯斯諦迴歸(Logistic Regression) Python實現

今天看了一下《統計學習方法》裏的邏輯斯諦迴歸,結合下《機器學習實戰》裏面的代碼,很精煉。公式如下: 模型: P(Y=1|x)=exp(w⋅x+b)1+exp(w⋅x+b)P(Y=1|x)=exp(w⋅x+b)1+exp(w⋅x+b)

原创 【統計學習方法】 Adaboost算法 Python實現

前言   俗話說三個臭皮匠,頂個諸葛亮。應用在機器學習裏面講就是多個弱分類器,通過組合可以變成一個強分類器,這也便是集成學習的思想。今天所要講的Adaboost(自適應提升)算法便是種思想的一種代表算法。Adaboost不同於SVM,是一

原创 【統計學習方法】k近鄰 kd樹的python實現

前言k近鄰可以算是機器學習中易於理解、實現的一個算法了,《機器學習實戰》的第一章便是以它作爲介紹來入門。而k近鄰的算法可以簡述爲通過遍歷數據集的每個樣本進行距離測量,並找出距離最小的k個點。但是這樣一來一旦樣本數目龐大的時候,就容易造成大

原创 《統計學習方法》 樸素貝葉斯 極大使然估計 Python實現

今天看了一下《統計學習方法》的樸素貝葉斯的算法,然後結合參考了《機器學習實戰》一些代碼。用Python實現了一下例4.1。實現的是P50頁的例4.1,先簡單說下公式。$$y=argmax_{y_k}{P(Y=y_k)\prod_j{P(X

原创 《統計學習方法》 決策樹 ID3和C4.5 生成算法 Python實現

終於搞定了決策樹的生成算法,決策樹看起來簡單,實現超複雜。樓主用書本64頁例5.3作爲本次的數據集。 定義5.1(決策樹) 分類決策樹模型是一種描述對實例進行分類的樹形結點。 先說一下熵和條件熵的公式。 熵:H(X)=−∑ni=1p

原创 《統計學習方法》 決策樹 CART生成算法 迴歸樹 Python實現

先說明一下在看《統計學習方法》Cart迴歸樹的時候懵懵的,也沒又例子。然後發現《機器學習實戰》P162有講到這個,仔細看了一下。 所以這下面是《機器學習實戰》的代碼,但書上沒有什麼原理,如果不太懂原理的話,會有點難以理解。而它的實現就是

原创 《統計學習方法》 樸素貝葉斯 貝葉斯估計 Python實現

由於使用極大似然估計會出現概率值爲0的情況,這會影響後續的計算。比如當有一個後驗概率爲0的時候,那麼會使我們最後計算先驗概率P(y=1)或者P(y=-1)出錯。 爲了解決這個問題我們一般引入一個 λ (>>0,但是通常設爲1)。 然

原创 【統計學習方法】感知機Python 對偶形式實現

代碼可在Github上下載:(https://github.com/q13030880/MachineLearning)上個博客提到了感知機的原始形式,接下來要給大家介紹的是感知機的對偶形式。在對偶形式中,感知機的模型是\[f = sig

原创 《統計學習方法》 決策樹 CART生成算法 分類樹 Python實現

先貼一個全代碼。後面有時間再來解釋。 # --*-- coding:utf-8 --*-- import numpy as np class Node: #結點 def __init__(self, data = None, l

原创 [數據結構]堆排序的C語言簡單實現

今天突然要用到堆排序,所以按照算法導論的僞代碼簡單實現了一下。 代碼寫得很簡潔,例子也是用算法導論的例子,分別實現了小根堆,大根堆的代碼,可以從小到大排序,也可以從大到小排序 #include <stdio.h> void MIN_H

原创 [數據結構]圖基於鄰接矩陣的BFS與DFS的C語言簡單實現

上次給大家看了一下圖的鄰接矩陣的存儲。接下來來看下圖的廣度優先搜索和深度優先搜索。 爲了更好的展示BFS和DFS,我把上次的圖改了一個邊,改成上圖那樣。 好了,貼代碼 由於我們的圖廣度遍歷時需要藉助一個隊列來實現 所以我們需要

原创 [數據結構]圖的DFS用棧消除遞歸的C語言簡單實現

大家都知道,我們通常做DFS是用遞歸的方式。 其實遞歸也就用到了棧。 那麼我們可以用棧來代替遞歸。 以下代碼是之前《棧的簡單實現》中的代碼,其中去掉了main函數,在函數聲明部分加上了static。 #include <stdio.