# 數據挖掘算法android
## 18大經典DM算法
18大數據挖掘的經典算法以及代碼實現,涉及到了決策分類,聚類,連接挖掘,關聯挖掘,模式挖掘等等方面,後面都是相應算法的博文連接,但願可以幫助你們學。
目前追加了其餘的一些經典的DM算法,在others的包中涉及聚類,分類,圖算法,搜索算等等,沒有具體分類。算法
* ### C4.5
C4.5算法與ID3算法同樣,都是數學分類算法,C4.5算法是ID3算法的一個改進。ID3算法採用信息增益進行決策判斷,而C4.5採用的是增益率。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/42395865)數據庫
* ### CART
CART算法的全稱是分類迴歸樹算法,他是一個二元分類,採用的是相似於熵的基尼指數做爲分類決策,造成決策樹後以後還要進行剪枝,我本身在實現整個算法的時候採用的是代價複雜度算法,[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/42558235)網絡
* ### KNN
K最近鄰算法。給定一些已經訓練好的數據,輸入一個新的測試數據點,計算包含於此測試數據點的最近的點的分類狀況,哪一個分類的類型佔多數,則此測試點的分類與此相同,因此在這裏,有的時候能夠複製不一樣的分類點不一樣的權重。近的點的權重大點,遠的點天然就小點。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/42613011)框架
* ### Naive Bayes
樸素貝葉斯算法。樸素貝葉斯算法是貝葉斯算法裏面一種比較簡單的分類算法,用到了一個比較重要的貝葉斯定理,用一句簡單的話歸納就是條件機率的相互轉換推導。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/42680161)dom
* ### SVM
支持向量機算法。支持向量機算法是一種對線性和非線性數據進行分類的方法,非線性數據進行分類的時候能夠經過核函數轉爲線性的狀況再處理。其中的一個關鍵的步驟是搜索最大邊緣超平面。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/42780439)函數
* ### EM
指望最大化算法。指望最大化算法,能夠拆分爲2個算法,1個E-Step指望化步驟,和1個M-Step最大化步驟。他是一種算法框架,在每次計算結果以後,逼近統計模型參數的最大似然或最大後驗估計。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/42921789)工具
* ### Apriori
Apriori算法是關聯規則挖掘算法,經過鏈接和剪枝運算挖掘出頻繁項集,而後根據頻繁項集獲得關聯規則,關聯規則的導出須要知足最小置信度的要求。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43059211)測試
* ### FP-Tree
頻繁模式樹算法。這個算法也有被稱爲FP-growth算法,這個算法克服了Apriori算法的產生過多侯選集的缺點,經過遞歸的產生頻度模式樹,而後對樹進行挖掘,後面的過程與Apriori算法一致。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43234309)大數據
* ### PageRank
網頁重要性/排名算法。PageRank算法最先產生於Google,核心思想是經過網頁的入鏈數做爲一個網頁好快的斷定標準,若是1個網頁內部包含了多個指向外部的連接,則PR值將會被均分,PageRank算法也會遭到LinkSpan攻擊。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43311943)
* ### HITS
HITS算法是另一個連接算法,部分原理與PageRank算法是比較類似的,HITS算法引入了權威值和中心值的概念,HITS算法是受用戶查詢條件影響的,他通常用於小規模的數據連接分析,也更容易遭受到攻擊。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43311943)
* ### K-Means
K-Means算法是聚類算法,k在在這裏指的是分類的類型數,因此在開始設定的時候很是關鍵,算法的原理是首先假定k個分類點,而後根據歐式距離計算分類,而後去同分類的均值做爲新的聚簇中心,循環操做直到收斂。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43373159)
* ### BIRCH
BIRCH算法利用構建CF聚類特徵樹做爲算法的核心,經過樹的形式,BIRCH算法掃描數據庫,在內存中創建一棵初始的CF-樹,能夠看作數據的多層壓縮。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43532111)
* ### AdaBoost
AdaBoost算法是一種提高算法,經過對數據的屢次訓練獲得多個互補的分類器,而後組合多個分類器,構成一個更加準確的分類器。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43635115)
* ### GSP
GSP算法是序列模式挖掘算法。GSP算法也是Apriori類算法,在算法的過程當中也會進行鏈接和剪枝操做,不過在剪枝判斷的時候還加上了一些時間上的約束等條件。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43699083)
* ### PreFixSpan
PreFixSpan算法是另外一個序列模式挖掘算法,在算法的過程當中不會產生候選集,給定初始前綴模式,不斷的經過後綴模式中的元素轉到前綴模式中,而不斷的遞歸挖掘下去。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43766253)
* ### CBA
基於關聯規則分類算法。CBA算法是一種集成挖掘算法,由於他是創建在關聯規則挖掘算法之上的,在已有的關聯規則理論前提下,作分類判斷,只是在算法的開始時對數據作處理,變成相似於事務的形式。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43818787)
* ### RoughSets
粗糙集算法。粗糙集理論是一個比較新穎的數據挖掘思想。這裏使用的是用粗糙集進行屬性約簡的算法,經過上下近似集的判斷刪除無效的屬性,進行規制的輸出。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43876001)
* ### GSpan
gSpan算法屬於圖挖掘算法領域。,主要用於頻繁子圖的挖掘,相較於其餘的圖算法,子圖挖掘算法是他們的一個前提或基礎算法。gSpan算法用到了DFS編碼,和Edge五元組,最右路徑子圖擴展等概念,算法比較的抽象和複雜。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/43924273)
##Others目錄下的算法:
* ### GA
遺傳算法。遺傳算法運用了生物進化理論的知識來尋找問題最優解的算法,算法的遺傳進化過程分選擇,交叉和變異操做,其中選擇操是很是關鍵的步驟,把更適應的基於組遺傳給下一代。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44041499)
* ### DbScan
基於空間密度聚類算法。dbScan做爲一種特殊聚類算法,彌補了其餘算法的一些不足,基於空間密,實現聚類效果,能夠發現任意形狀的聚簇。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44311309)
* ### GA_Maze
遺傳算法在走迷宮遊戲中的應用。將走迷宮中的搜索出口路徑的問題轉化爲遺傳算法中的問題經過構造針對此特定問題的適值函數,基因移動方向的定位,巧的進行問題的求解。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44656809)
* ### CABDDCC
基於連通圖的分裂聚類算法。也是屬於層次聚類算法主要分爲2個階段,第一階段構造連通圖。第二個階段是分裂連通圖,最終造成聚類結果。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44463997)
* ### Chameleon
兩階段聚類算法。與CABDDCC算法相反,最後是經過對小簇集合的合併,造成最終的結果,在第一階段主要是經過K近鄰的思想造成小規模的連通圖,第二階段經過RI(相對互連性)和RC(相對近似性)來選一個最佳的簇進行合併。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44569077)
* ### RandomForest
隨機森林算法。算法思想是決策樹+boosting.決策樹採用的是CART分類迴歸數,經過組合各個決策樹的弱分類器,構成一個最終的強分類器,在構造決策樹的時候採起隨機數量的樣本數和隨機的部分屬性進行子決策樹的構建,避免了過度擬合的現象發生。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44756943)
* ### KDTree
K-Dimension Tree。多維空間劃分樹,數據在多維空間進行劃分與查找。主要用於關鍵信息的搜索,相似於在空間中的二分搜索,大大提升了搜索效率,在尋找目標元素時,使用了DFS深度優先的方式和回溯進行最近點的尋找。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/44985259)
* ### MS-Apriori
基於多支持度的Apriori算法。是Apriori算法的升級算法,彌補了原先Apriori算法的不足,還增長了支持度差異限制以及支持度計數統計方面的優化,無須再次從新掃描整個數據集,產生關聯規則的時候能夠根據子集的關係避免一些置信度的計算。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/45082337)
* ### ACO
蟻羣算法。蟻羣算法又稱爲螞蟻算法。同GA遺傳算法相似,也是運用了大天然規律的算法,用於在圖中尋找最優路徑的機率型算法。靈感來源於螞蟻在尋找食物時會散播信息素的發現路徑行爲。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/45395491)
* ### BayesNetwork
貝葉斯網絡算法。彌補了樸素貝葉斯算法中必需要事件獨立性的缺點,利用了貝葉斯網絡的DAG有向無環圖,容許各個事件保留必定的依賴關係,網絡結構中的每一個節點表明一種屬性,邊表明相應的條件機率值,經過計算從而能獲得精準的分類效果。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/46683729)
* ### TAN
樹型樸素貝葉斯算法。此算法又被稱爲增強版樸素貝葉斯算法。在知足原有樸素貝葉斯條件的基礎上,他容許部條件屬性直接的關聯性。造成樹型的結構。[詳細介紹連接](http://blog.csdn.net/androidlushangderen/article/details/46763427)
* ### Viterbi
維特比算法。給定一個隱馬爾科夫模型以及一個觀察序列,求出潛在的狀態序列信息,每一個潛在狀態信息又會受到前一個狀態信息的影響。
## 算法使用方法
在每一個算法中給出了3大類型,主算法程序,調用程序,輸入數據,調用方法以下:
* 將須要數據的測試數據轉化成與給定的輸入格式相同
* 而後以Client類的測試程序調用方式進行使用。
* 也能夠自行修改算法程序,來適用於本身的使用場景
## 算法目錄
#### 18大DM算法
包名 | 目錄名 | 算法名 |
-----| ------ |--------|
AssociationAnalysis | DataMining_Apriori | Apriori-關聯規則挖掘算法
AssociationAnalysis | DataMining_FPTree | FPTree-頻繁模式樹算法
BaggingAndBoosting | DataMining_AdaBoost | AdaBoost-裝袋提高算法
Classification | DataMining_CART | CART-分類迴歸樹算法
Classification | DataMining_ID3 | ID3-決策樹分類算法
Classification | DataMining_KNN | KNN-k最近鄰算法工具類
Classification | DataMining_NaiveBayes | NaiveBayes-樸素貝葉斯算法
Clustering | DataMining_BIRCH | BIRCH-層次聚類算法
Clustering | DataMining_KMeans | KMeans-K均值算法
GraphMining | DataMining_GSpan | GSpan-頻繁子圖挖掘算法
IntegratedMining | DataMining_CBA | CBA-基於關聯規則的分類算法
LinkMining | DataMining_HITS | HITS-連接分析算法
LinkMining | DataMining_PageRank | PageRank-網頁重要性/排名算法
RoughSets | DataMining_RoughSets | RoughSets-粗糙集屬性約簡算法
SequentialPatterns | DataMining_GSP | GSP-序列模式分析算法
SequentialPatterns | DataMining_PrefixSpan | PrefixSpan-序列模式分析算法
StatisticalLearning | DataMining_EM | EM-指望最大化算法
StatisticalLearning | DataMining_SVM | SVM-支持向量機算法
#### 其餘經典DM算法 包名 | 目錄名 | 算法名 | -----| ------ |--------| Others | DataMining_ACO | ACO-蟻羣算法 Others | DataMining_BayesNetwork | BayesNetwork-貝葉斯網絡算法 Others | DataMining_CABDDCC | CABDDCC-基於連通圖的分裂聚類算法 Others | DataMining_Chameleon | Chameleon-兩階段合併聚類算法 Others | DataMining_DBSCAN | DBSCAN-基於密度的聚類算法 Others | DataMining_GA | GA-遺傳算法 Others | DataMining_GA_Maze | GA_Maze-遺傳算法在走迷宮遊戲中的應用算法 Others | DataMining_KDTree | KDTree-k維空間關鍵數據檢索算法工具類 Others | DataMining_MSApriori | MSApriori-基於多支持度的Apriori算法 Others | DataMining_RandomForest | RandomForest-隨機森林算法 Others | DataMining_TAN | TAN-樹型樸素貝葉斯算法 Others | DataMining_Viterbi | Viterbi-維特比算法