''' KNN 近鄰算法,有監督學習算法 用於分類和回歸 思路: 1.在樣本空間中查找 k 個最相似或者距離最近的樣本 2.根據這 k 個最相似的樣本對未知樣本進行分類 步驟: 1.對數據進行預處理 提取特征向量,對原來的數據重新表達 2.確定距離計算公式 計算已知樣本空間中所有樣本與未知樣本的距離 3.對所有的距離按升序進行排列 4.選取與未知樣本距離最小的 k 個樣本 5.統計選取的 k 個樣本中每個樣本所屬類別的出現概率 6.把出現頻率最高的類別作為預測結果,未知樣本則屬於這個類別 程序要點: 1.創建模型需要用到的包 sklearn.neighbors.KNeighborsClassifier 2.創建模型,k = 3 knn = KNeighborsClassifier(n_neighbors = 3) n_neighbors 數值不同,創建的模型不同 3.訓練模型,進行擬合 knn.fit(x,y) x 為二維列表數據 x = [[1,5],[2,4],[2.2,5], [4.1,5],[5,1],[5,2],[5,3],[6,2], [7.5,4.5],[8.5,4],[7.9,5.1],[8.2,5]] y 為一維分類數據,將數據分為 0 1 2 三類 y = [0,0,0, 1,1,1,1,1, 2,2,2,2] 4.進行預測未知數據,返回所屬類別 knn.predict([[4.8,5.1]]) 5.屬於不同類別的概率 knn.predict_proba([[4.8,5.1]]) ''' from sklearn.neighbors import KNeighborsClassifier # 導包 x = [[1,5],[2,4],[2.2,5], [4.1,5],[5,1],[5,2],[5,3],[6,2], [7.5,4.5],[8.5,4],[7.9,5.1],[8.2,5]] # 設置分類的數據 y = [0,0,0, 1,1,1,1,1, 2,2,2,2] # 對 x 進行分類,前三個分為 0類,1類和2類 knn = KNeighborsClassifier(n_neighbors=3) # 創建模型 k = 3 knn.fit(x,y) # 開始訓練模型 ''' KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=None, n_neighbors=3, p=2, weights='uniform') ''' knn.predict([[4.8,5.1]]) # array([1]) 預測 4.8,5.1 在哪一個分組中 knn = KNeighborsClassifier(n_neighbors=9) # 設置參數 k = 9 knn.fit(x,y) ''' KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=None, n_neighbors=9, p=2, weights='uniform') ''' knn.predict([[4.8,5.1]]) # array([1]) knn.predict_proba([[4.8,5.1]]) # 屬於不同類別的概率 # array([[0.22222222, 0.44444444, 0.33333333]]) # 返回的是在不同組的概率 ''' 總結: knn = KNeighborsClassifier(n_neighbors=3) 使用 KNeighborsClassifier 創建模型 n_neighbors 為 k 使用 knn.fit() 進行預測 第一個參數為 二維列表 第二個參數為 一維列表 使用 predict_proba([[num1,num2]]) 查看num1,num2 在模型中出現的概率 '''
2020-04-10