最基礎的分類演算法(KNN)
K近鄰演算法(K Nearest Neighbors)
和K個樣本哪個類別相似越多,則這個新的樣本最有可能屬於哪個類別。
1.1過程
(1)相似度計算:
尤拉距離:
distances=[sqrt(np.sum((x_train-x)**2))for x_train in X_train]
(2)進行排序,返回的是索引
nearest=np.argsort(distances)
k=6
topK_y=[y_train[i] for I in nearest[:k]]
(3)不同類別的點有多少個
from collections import Counter
votes=Counter(topK_y)
predict_y=votes.most_common(1)[0] //計算最多的一個元素
===========》則判斷出新來的類別predict_y
1.2如何使用scikit-learn中的kNN?
(1)引包:from sklearn.neighbors import kNeighborsClassifier
(2)改造函式:kNN_classfier=KNeighborsClassifier(n_neighbors=6)
(3)kNN_classfier.fit(x_train,y_train)
(4)預測:y_predict=kNN_classfier.predict(x)
(5)y_predict[0]
1.3演算法效能
分割原始模型成訓練資料集和測試資料集:
訓練資料集用於訓練模型;測試資料集用於評測訓練出來的模型怎麼樣。
(1)打亂:索引隨機的排列:shuffle_index=np.random.permutation(len(X))
(2)設定測試資料集和訓練資料集的比例,得到測試資料集和訓練資料集的資料大小
test_radio=0.2
test_size=(int)(len(X)*test_radio)
test_indexes=shuffle_index[:test_size]
tain_indexes=shuffle_index[test_size:]
x_train=X[train_indexes]
y_train=Y[train_indexes]
x_test=X[test_indexes]
y_test=Y[test_indexes]
sklearn中的train_test_split:
from sklearn.model_selection import train_test_split
x_train, y_train, x_test,y_test=train_split_test(X,Y,test_size=0.2)
1.4超引數
超引數:在執行機器學習之前需要指定的引數。例如KNN中的K
模型引數:在模型過程中學習的引數
尋找knn中最好的k?
knn
距離:當p=1=》曼哈頓距離;當p=2=》尤拉距離…..則p就是超引數
搜尋明可夫斯基距離相應的p:
明可夫斯基距離
1.5網格搜尋GridSearch
導包:fromsklearn.model_selection import GridSearchCV
使用:grid_search=GridSearchCV(knn_clf,param_grid,njobs,verbose)
1.6資料歸一化Feature Scaling
將所有的資料對映到同一尺度。
1.6.1最值歸一化normalization
把所有資料對映到0-1之間(適用於分佈有明顯邊界的情況;受outlier影響較大)
例如:同學考試成績,影像畫素
X[:,0]=(X[:,0]-np.min(X[:,0]))/(np.max(X[:,0]-np.min(X[:,0])))
1.6.2均值方差歸一化standardization
把所有資料歸一到均值為0方差為1的分佈中。(適用於分佈沒有明顯邊界的情況;有可能存在極端資料值)
X [:,0]=(X [:,0]-np.mean(X[:,0]))/ np.std(X[:,0])
X[:,1]=(X[:,1]-np.mean(X[:,1]))/ np.std(X[:,1])
1.6.3Scikit-learn中使用Scaler
(1)導包:from sklearn.preprocessing import StandardScaler
(2)例項化:standardScaler=StandardScaler()
(3)fit:standardScaler.fit(x_train)
(4)均值:standardScaler.mean_
(5)方差:standardScaler.scale_
(6)歸一化:
x_train =standardScaler.transform(x_train)
x_test_standard=standardScaler.transform(x_test)
作者:下雨天的小白鞋
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2811954/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- KNN演算法——分類部分KNN演算法
- 演算法實踐:KNN分類(day08)演算法KNN
- 資料探勘——KNN演算法(手寫數字分類)KNN演算法
- KNN 演算法-理論篇-如何給電影進行分類KNN演算法
- Python基礎(二) 最簡單易懂的基礎篇——Python資料型別定義和分類Python資料型別
- 機器學習演算法-K近鄰(KNN)演算法(三):馬絞痛資料--kNN資料預處理+kNN分類pipeline(程式碼附詳細註釋)機器學習演算法KNN
- sklearn學習 第一篇:knn分類KNN
- 演算法基礎---二分演算法演算法
- TensorFlow2基礎:CNN影像分類CNN
- 人工智慧的預訓練基礎模型的分類人工智慧模型
- KNN演算法實驗KNN演算法
- scikit-learn中KNN演算法資料歸一化的分裝KNN演算法
- 『忘了再學』Shell基礎 — 2、Shell的作用與分類
- mysql基礎複習(SQL語句的四個分類),MySql
- 手勢識別演算法: 資料濾波演算法、資料分演算法——KNN演算法KNN
- 零基礎搭建智慧垃圾分類小程式
- 演算法金 | 再見!!!KNN演算法KNN
- 演算法(八):圖解KNN演算法演算法圖解KNN
- 最基礎的Nginx教學Nginx
- 最完整的Markdown基礎教程
- Android事件分發機制:基礎篇:最全面、最易懂Android事件
- 【基礎題】【類】類的設計思路
- codetop演算法分類演算法
- KNN演算法推理與實現KNN演算法
- 演算法基礎之8大排序演算法最優解-必讀演算法排序
- 分類演算法-AdaBoot 演算法演算法boot
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- 【scikit-learn基礎】--『預處理』之 分類編碼
- python機器學習演算法——KNN演算法Python機器學習演算法KNN
- 基於PaddlePaddle的影象分類實戰 | 深度學習基礎任務教程系列(一)深度學習
- 基於PaddlePaddle的影像分類實戰 | 深度學習基礎任務教程系列(一)深度學習
- 基於PaddlePaddle的圖片分類實戰 | 深度學習基礎任務教程系列深度學習
- 基礎演算法演算法
- 演算法基礎演算法
- 什麼是機器學習的分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- educoder 機器學習 --- kNN演算法機器學習KNN演算法
- sklearn調包俠之KNN演算法KNN演算法
- 破解垃圾分類難題,智慧分類如何實現最優解?