hunt演算法
❶ c語言入門買什麼書好
1、基礎(C語言入門,初學,編程基礎)
《C語言程序設計:現代方法》(第2版)(C
Programming: A Modern Approach, 2nd Edition, K.N.King)
《深入理解計算機系統》(修訂版或第2版)(Computer Systems: A Programmer's Perspective,
Randal E. Bryant et al),閱讀建議
《C語言程序設計》(第2版)(The
C Programming Language, Brian W. Kernighan & Dennis M.
Ritchie)
《程序員修煉之道》(The
Pragmatic Programmer: From Journeyman to master, Andy
Hunt & Dave Thomas)
2、內核/驅動
《Linux內核設計與實現》(第3版)(Linux
Kernel Development, 3rd Edition, Robert Love)
《Linux設備驅動程序》(第3版)(Linux
Device Driver, 3rd Edition, Jonathan Corbet et al)
《深入Linux內核架構》(Professional
Linux Kernel Architecture, Wolfgang Mauerer)
3、應用
《UNIX網路編程》(Unix
Network Programming, W. Richard Stevens)
《UNIX環境高級編程》(Advanced
Programming in the UNIX Environment, W. Richard Stevens)
4、進階
《C陷阱與缺陷》(C Traps and Pitfalls, Andrew Koenig)
《C專家編程》(Expert C Programming, Peter
van der Linden)
《ARM嵌入式系統開發:軟體設計與優化》(ARM
System Developer's Guide: Designing and Optimizing System Software,
Andrew Sloss et al)
❷ 分類和聚類的區別及各自的常見演算法
1、分類和聚類的區別:
Classification (分類),對於一個classifier,通常需要你告訴它「這個東西被分為某某類」這樣一些例子,理想情況下,一個 classifier 會從它得到的訓練集中進行「學習」,從而具備對未知數據進行分類的能力,這種提供訓練數據的過程通常叫做supervised learning (監督學習),
Clustering (聚類),簡單地說就是把相似的東西分到一組,聚類的時候,我們並不關心某一類是什麼,我們需要實現的目標只是把相似的東西聚到一起。因此,一個聚類演算法通常只需要知道如何計算相似度就可以開始工作了,因此 clustering 通常並不需要使用訓練數據進行學習,這在Machine Learning中被稱作unsupervised learning (無監督學習).
2、常見的分類與聚類演算法
所謂分類,簡單來說,就是根據文本的特徵或屬性,劃分到已有的類別中。如在自然語言處理NLP中,我們經常提到的文本分類便就是一個分類問題,一般的模式分類方法都可用於文本分類研究。常用的分類演算法包括:決策樹分類法,樸素貝葉斯分類演算法(native Bayesian classifier)、基於支持向量機(SVM)的分類器,神經網路法,k-最近鄰法(k-nearestneighbor,kNN),模糊分類法等等。
分類作為一種監督學習方法,要求必須事先明確知道各個類別的信息,並且斷言所有待分類項都有一個類別與之對應。但是很多時候上述條件得不到滿足,尤其是在處理海量數據的時候,如果通過預處理使得數據滿足分類演算法的要求,則代價非常大,這時候可以考慮使用聚類演算法。
而K均值(K-mensclustering)聚類則是最典型的聚類演算法(當然,除此之外,還有很多諸如屬於劃分法K中心點(K-MEDOIDS)演算法、CLARANS演算法;屬於層次法的BIRCH演算法、CURE演算法、CHAMELEON演算法等;基於密度的方法:DBSCAN演算法、OPTICS演算法、DENCLUE演算法等;基於網格的方法:STING演算法、CLIQUE演算法、WAVE-CLUSTER演算法;基於模型的方法)。
❸ 決策樹基本概念及演算法優缺點
分類決策樹模型是一種描述對實例進行分類的樹形結構. 決策樹由結點和有向邊組成. 結點有兩種類型: 內部結點和葉節點. 內部節點表示一個特徵或屬性, 葉節點表示一個類.
決策樹(Decision Tree),又稱為判定樹, 是一種以樹結構(包括二叉樹和多叉樹)形式表達的預測分析模型.
分類樹--對離散變數做決策樹
回歸樹--對連續變數做決策樹
優點:
(1)速度快: 計算量相對較小, 且容易轉化成分類規則. 只要沿著樹根向下一直走到葉, 沿途的分裂條件就能夠唯一確定一條分類的謂詞.
(2)准確性高: 挖掘出來的分類規則准確性高, 便於理解, 決策樹可以清晰的顯示哪些欄位比較重要, 即可以生成可以理解的規則.
(3)可以處理連續和種類欄位
(4)不需要任何領域知識和參數假設
(5)適合高維數據
缺點:
(1)對於各類別樣本數量不一致的數據, 信息增益偏向於那些更多數值的特徵
(2)容易過擬合
(3)忽略屬性之間的相關性
若一事假有k種結果, 對應概率為 , 則此事件發生後所得到的信息量I為:
給定包含關於某個目標概念的正反樣例的樣例集S, 那麼S相對這個布爾型分類的熵為:
其中 代表正樣例, 代表反樣例
假設隨機變數(X,Y), 其聯合分布概率為P(X=xi,Y=yi)=Pij, i=1,2,...,n;j=1,2,..,m
則條件熵H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性, 其定義為X在給定條件下Y的條件概率分布的熵對X的數學期望
在Hunt演算法中, 通過遞歸的方式建立決策樹.
使用信息增益, 選擇 最高信息增益 的屬性作為當前節點的測試屬性
ID3( Examples,Target_attribute,Attributes )
Examples 即訓練樣例集. Target_attribute 是這棵樹要預測的目標屬性. Attributes 是除目標屬性外供學習到的決策樹測試的屬性列表. 返回能正確分類給定 Examples 的決策樹.
class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)
限制決策樹層數為4的DecisionTreeClassifier實例
This plot compares the decision surfaces learned by a dcision tree classifier(first column), by a random forest classifier(second column), by an extra-trees classifier(third column) and by an AdaBoost classifier(fouth column).
Output:
A comparison of a several classifiers in scikit-learn on synthetic datasets.
The point of this examples is to illustrate the nature of decision boundaries of different classifiers.
Particularly in high-dimensional spaces, data can more easily be separated linearly and the simplicity of classifiers such as naive Bayes and linear SVMs might lead to better generalization than is achieved by other classifiers.
This example fits an AdaBoost decisin stump on a non-linearly separable classification dataset composed of two "Gaussian quantiles" clusters and plots the decision boundary and decision scores.
Output: