原创 非參方法-K NearestNeighbor(KNN)

非參方法-K NearestNeighbor(KNN) KNN方法作爲一種無參方法,使用起來十分簡單,方便。更爲重要的是它往往能夠得到很好的效果。它既可以應用到分類中,也可以應用到迴歸中,是一種十分重要的方法。 問題: 給定一組訓

原创 神經網絡激活函數的介紹

1、Sigmoid Sigmoid函數在以往的神經網絡裏是很常用的,但在深度學習裏用的並不那麼多,它主要有以下不足: a、容易過飽和並且造成梯度消失。從圖中可以看出當Sigmoid函數的值爲0或1時,而我們知道sigmoid函

原创 用鏈表實現雙向隊列

每個節點設置了指向前一節點與後一節點的引用pre與next,實現了隊列兩端增加刪除元素的操作。 具體代碼如下: import java.util.Iterator; import edu.princeton.cs.algs4.S

原创 預處理流程

數據預處理的3種形式: 1) 除去均值法 即減去均值,既可以每一列特徵去考慮,也可以全部數據放在一起考慮。或者說從RGB3個通道去考慮 即: X−=np.mean(X,axis=0) X−=np.mean(X) 2)歸一

原创 推薦系統:Collaborative recommendation

1、CF算法處理的問題描述: 給定用戶集合U={u1,u2,...un} 以及物品集合P={p1,p2,...pm} 和用戶對物品的評分矩陣R(nxm維),預測某些用戶沒有評分物品可能的評分分數 基於此,CF算法有兩個基本的假設

原创 鏈表的java實現與時間和空間複雜度分析

今天主要編寫了鏈表,其具體代碼如下: import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class LinkLis

原创 快速排序(Quick Sort)

快速排序可以說是排序算法中速度最快的通用排序方法,只要是因爲它的內循環中的指令很少。雖然在最差情況之下,其時間複雜度會達到平方級別,但可以通過在排序之前運用隨機打亂數組的方法,避免最壞情況的出現。 其Java代碼如下: impo

原创 優先隊列(Priority Queue)

優先隊列的應用十分廣泛,包括著名的A*算法在內的多種算法,均是利用了優先隊列。優先隊列的實現可以利用數組與鏈表,但效果都不太理想,利用二叉堆實現是最高效的算法,基於最小元素的優先隊列JAVA代碼如下: import edu.pri

原创 Kaggle Animal Shelter Outcome整個流程

本文主要對Kaggle的一個比賽項目,進行了分析說明,希望能夠查找到原因,提高數據分析的能力。 具體項目要求及數據請看[這裏] 簡而言之這是一個多分類的問題,並需要計算出屬於各個類的概率,項目評判的標準是交叉熵(Cross Ent

原创 選擇排序與插入排序

選擇排序與插入排序是最基本的兩種排序算法,他們是複雜排序算法的基礎。 其中選擇排序Java代碼如下: import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.a

原创 希爾排序

希爾排序(Shell Sort) 實質上是插入排序(Insertion Sort)的變種,它以一組序列爲間隔進行插入排序,其具體代碼如下: import edu.princeton.cs.algs4.StdOut; public

原创 推薦系統2

推薦系統的上下文信息 實時推薦系統不能每天都給所有用戶離線計算推薦結果,然後在線展示昨天計算出來的 結果。所以,要求在每個用戶訪問推薦系統時,都根據用戶這個時間點前的行爲實時計 算推薦列表。 推薦算法需要平衡考慮用戶的近期行爲

原创 PRML學習總結之三-----概率分佈之二

PRML學習總結之三—–概率分佈之二 這一部分主要介紹機器學習之中的重要分佈:高斯分佈(Gaussian Distribution),高斯分佈貫穿整個機器學習中的各個部分。本文主要介紹2維、3維高斯分佈的特點及性質。 高斯分佈的

原创 用2個棧實現數學運算

在看《Algorithm》這本書時看到一個算法,可以很巧妙地實現對一個式子(字符串)實現運算,例如輸入((1 + 2)* ( 1 / 2 ) ) =, 可以得到1.5. 其基本原理是: 1.構建2個棧,一個用於存儲數字,一個用

原创 可變容量隊列的數組實現

其基本思想是構建了一個QueueArray類,其API如下所示: (1) private void resize(int capacity): 當隊列的長度與所使用的數組長度相差較大時,重新設置數組的大小。當隊列的長度大於數組長