国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python機器學習之scikit-learn庫中KNN算法的封裝與使用方法

2020-02-16 00:09:01
字體:
來源:轉載
供稿:網友

本文實例講述了Python機器學習之scikit-learn庫中KNN算法的封裝與使用方法。分享給大家供大家參考,具體如下:

1、工具準備,python環境,pycharm

2、在機器學習中,KNN是不需要訓練過程的算法,也就是說,輸入樣例可以直接調用predict預測結果,訓練數據集就是模型。當然這里必須將訓練數據和訓練標簽進行擬合才能形成模型。

3、在pycharm中創建新的項目工程,并在項目下新建KNN.py文件。

import numpy as npfrom math import sqrtfrom collections import Counterclass KNNClassifier:  def __init__(self,k):    """初始化KNN分類器"""    assert k >= 1    """斷言判斷k的值是否合法"""    self.k = k    self._X_train = None    self._y_train = None  def fit(self,X_train,y_train):    """根據訓練數據集X_train和Y_train訓練KNN分類器,形成模型"""    assert X_train.shape[0] == y_train.shape[0]    """數據和標簽的大小必須一樣    assert self.k <= X_train.shape[0]    """k的值不能超過數據的大小"""    self._X_train = X_train    self._y_train = y_train    return self  def predict(self,X_predict):    """必須將訓練數據集和標簽擬合為模型才能進行預測的過程"""    assert self._X_train is not None and self._y_train is not None    """訓練數據和標簽不可以是空的"""    assert X_predict.shape[1]== self._X_train.shape[1]    """待預測數據和訓練數據的列(特征個數)必須相同"""    y_predict = [self._predict(x) for x in X_predict]    return np.array(y_predict)  def _predict(self,x):    """給定單個待測數據x,返回x的預測數據結果"""    assert x.shape[0] == self._X_train.shape[1]    """x表示一行數據,即一個數組,那么它的特征數據個數,必須和訓練數據相同    distances = [sqrt(np.sum((x_train - x)**2))for x_train in self._X_train]    nearest = np.argsort(distances)    topk_y = [self._y_train[i] for i in nearest[:self.k]]    votes = Counter(topk_y)    return votes.most_common(1)[0][0]

4、新建test.py文件,引入KNNClassifier對象。

from KNN.py import KNNClassifierraw_data_x = [[3.393,2.331],       [3.110,1.781],       [1.343,3.368],       [3.582,4.679],       [2.280,2.866],       [7.423,4.696],       [5.745,3.533],       [9.172,2.511],       [7.792,3.424],       [7.939,0.791]]raw_data_y = [0,0,0,0,0,1,1,1,1,1]X_train = np.array(raw_data_x)y_train = np.array(raw_data_y)x = np.array([9.880,3.555])# 要將x這個矩陣轉換成2維的矩陣,一行兩列的矩陣X_predict = x.reshape(1,-1)"""1,創建一個對象,設置K的值為6"""knn_clf = KNNClassifier(6)"""2,將訓練數據和訓練標簽融合"""knn_clf.fit(X_train,y_train)"""3,經過2才能跳到這里,傳入待預測的數據"""y_predict = knn_clf.predict(X_predict)print(y_predict)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元朗区| 科技| 手游| 桃园县| 丰原市| 阿拉善右旗| 吉隆县| 集安市| 新龙县| 江西省| 绥滨县| 友谊县| 沙洋县| 黎平县| 连云港市| 钟山县| 河北区| 余姚市| 元阳县| 沂水县| 突泉县| 丽江市| 福鼎市| 定西市| 五原县| 汕头市| 亚东县| 喀什市| 崇州市| 敦煌市| 城市| 商丘市| 石棉县| 旺苍县| 木兰县| 同德县| 思茅市| 天气| 保德县| 新津县| 阳朔县|