使用Orange進行資料探勘之分類(2)------KNN分類
阿新 • • 發佈:2019-01-09
knn基本概念
knn把每個樣例看做是空間上的一個點,給定一個測試樣例,
使用適當的鄰近性度量演算法,計算出該點與訓練集中其他點的鄰近度。選擇K個最相近的點。
在選擇出的K個樣例中,比例最好的類就是測試樣例的類。
從以上描述中可以看出,如果k選擇的太小,該演算法容易受到噪聲的影響,而產生過度擬合的影響,然而如果選擇的過大,可能造成誤分類。
演算法描述:
k是最近鄰數目,D是訓練樣例的集合,z是測試樣例
for 樣例 in 訓練樣例集合:
z和每個樣例的相似度
找到k個最相近的樣例集合
k個樣例中類標號最多的類,就是測試樣例的類標號。
Orange中的knn
以iris資料為例:
import Orange #載入資料 iris = Orange.data.Table('iris')
knn = Orange.classification.knn.kNNLearner(iris, k=10) for i in iris: #將預測結果和實際結果不同的部分輸出 if i.getclass()!=knn(i): print i.getclass(),knn(i)
輸出結果如下:
Iris-versicolor Iris-virginica Iris-versicolor Iris-virginica Iris-virginica Iris-versicolor Iris-virginica Iris-versicolor Iris-virginica Iris-versicolor
該資料集共有150個例項,從結果看有5個預測結果是錯誤的。
下面以圖形化的方式來比較樸素貝葉斯分類、KNN分類、s。
下圖展現了用orange圖形介面的方法:
下圖給出了這一比較結果:
從上面的結果中可以看出knn和其他幾個方法基本相當。