91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現一個KNN算法

發布時間:2021-06-21 18:23:25 來源:億速云 閱讀:155 作者:Leah 欄目:大數據

怎么實現一個KNN算法,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

教你如何自己實現KNN算法

KNN算法,也稱為K鄰近算法,可以解決回歸和分類問題,但解決分類問題才是它的優勢。

KNN算法的本質就是尋找與我們提供的數據相似的k個樣本,然后判斷這k個樣本的標簽,最后統計每個標簽出現的次數,次數最多的標簽,就會被當作我們提供的數據的標簽。

先說說工作流程:

  1. 機器學習是基于數據的,所以要先將實物轉換為向量、矩陣或張量的形式

  2. 通過歐式距離計算出測試樣本與其他樣本之間的距離

  3. 將距離按照小到大排序,并取前K個值

  4. 判斷前K個值相應的標簽,并進行統計

  5. 統計最多的標簽即為預測結果

現在我們來動手實現一下

先導入所有需要導入的庫或模塊

# 導入sklearn自帶的數據集from sklearn import datasets# 導入計數器,用于統計標簽出現的次數from collections import Counter# 用于分割數據集from sklearn.model_selection import train_test_split# 用于計算歐式距離import numpy as np

其次,導入iris數據集,存儲樣本特征和標簽

data = datasets.load_iris()# 將樣本特征存儲到XX = data['data']# 將樣本標簽存儲到YY = data['target']

然后為了后期評估模型,這里將數據集分為訓練集和測試集

X_train,X_test,Y_train,Y_test = train_test_split(X,Y,random_state=2000)

設置random_state為固定值,這樣每次的運行結果就會一樣,幫助我們判斷過程出現的bug

再次,寫一個計算距離的函數eus_dis

def eus_dis(instance1, instance2):    '''計算兩個樣本之間的距離      instance1:array型      instance2:array型    '''    distance = np.sqrt(sum((instance1-instance2)**2))    return distance

接著,真正的開始實現KNN算法

def KnnClassify(X,Y,test,k):    '''實現KNN算法        X:特征訓練集-->array型        Y:標簽訓練集-->array型        test:特征測試集-->array型        k:鄰近值-->int    '''    # 計算樣本之間的距離    distances = [eus_dis(x, test) for x in X]    # 按照從小到大排序,并取前K個值,返回下標    kneighbors = np.argsort(distances)[:k]    # 統計每個標簽出現的次數    count = Counter(Y[kneighbors])    # 返回出現次數最多的標簽    return count.most_common()[0][0]

最后我們來進行測試,觀察其準確率

# 存儲模型對特征測試集的預測結果predirect = [KnnClassify(X_train,Y_train,test,5) for test in X_test]# 計算預測結果與實際結果相等的個數count = np.count_nonzero((predirect==Y_test)==True)print("該模型的預測準確率為:%.3f" % (count/len(X_test)))

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平塘县| 襄城县| 海阳市| 承德县| 莆田市| 大兴区| 得荣县| 原阳县| 嘉义市| 唐河县| 贵南县| 遂平县| 太白县| 北安市| 天等县| 青海省| 石城县| 宜都市| 黔江区| 长白| 乌海市| 鹿邑县| 汤阴县| 渭源县| 普洱| 大理市| 得荣县| 齐河县| 宁海县| 阿图什市| 穆棱市| 黄陵县| 南丹县| 夏邑县| 山东| 平山县| 高台县| 莲花县| 琼中| 通化市| 威海市|