亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

KNN算法調優

發布時間:2020-07-22 15:09:32 來源:網絡 閱讀:284 作者:ckllf 欄目:編程語言

  1.所用方法:

  交叉驗證與網格搜索

  交叉驗證(為了讓被評估的模型更加精確可信):

  所有訓練集數據分成N等分,幾等分就是幾折交叉驗證

  網格搜索:調參數 K-近鄰:超參數K

  2.API:

  sklearn.model_selection.GridSearchCV: CV即cross validation

  GridSearchCV(estimator,param_grid=None,cv=None)

  .對估計器的參數指定值進行詳盡搜索

  .estimator 估計器對象

  .param_grid: 參數估計器(dict){"n_neighbors":[1,3,5]}

  .cv :指定幾折交叉驗證

  .fit:輸入訓練數據

  .結果分析;

  .best_score:在交叉驗證中驗證的最好結果

  .best_estimaor:最好的參數模型

  .cv_results_:每次交叉驗證后的驗證集正確率結果和訓練集正確率結果

  3.對之前的預測簽入案例調優:

  # -*- coding: utf-8 -*-

  '''

  @Author :Jason

  '''

  from sklearn.model_selection import GridSearchCV

  from sklearn.neighbors import KNeighborsClassifier

  import pandas as pd

  from sklearn.model_selection import train_test_split

  from sklearn.preprocessing import StandardScaler

  def knn():

  '''

  k-近鄰預測用去簽入位置

  :return:

  '''

  #1.讀取數據

  data = pd.read_csv(r"./files/FBlocation/train.csv")

  print(data.head())

  #2.處理數據

  #2.1.縮小數據,查詢數據篩選:query 理解為 sql 中的查詢

  data.query("x > 1.0 & y < 1.25 & y > 2.5 & y < 2.75")

  #2.2.處理時間

  time_value = pd.to_datetime(data["time"],unit="s") #秒

  print(time_value)

  #2.3.把時間格式轉換成 字典格式

  time_value = pd.DataFrame(time_value) #年月日時分秒等變為{"year":2019,"month":01} 這樣的

  #2.4.構造一些特征,年月都一樣

  data["day"] = time_value.day

  data["hour"] = time_value.hour

  data["weekday"] = time_value.weekday

  #2.5.刪除一些特征鄭州婦科醫院 http://m.zyfuke.com/

  data = data.drop(["time"],axis=1) #pandas中axis=1代表列,sklearn中axis=0代表列

  #2.6.將簽到位置少于 n 個用戶的數據刪除

  place_count = data.groupby("place_id").count() #根據place_id分組,統計次數

  tf = place_count[place_count.row_id > 3].reset_index() #次數大于3的索引重置0,1,2排序,將原來索引放置place_id列

  data = data[data["place_id"].isin(tf.place_id)] #如果place_id > 3的數據保存,小于則去掉

  #2.7.去除數據當中的特征值 和 目標值

  y = data["place_id"]

  x = data.drop(["place_id"],axis=0.25)

  #2.8.進行數據的分割訓練集合測試集

  x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

  #3.特征工程(標準化) #這里標準化,和前期對比

  std = StandardScaler()

  #測試、訓練集特征值 標準化

  x_train_std = std.fit_transform(x_train)

  # y_train_std = std.fit_transform(y_train)#已經fit轉換過了,可以直接transform()

  y_train_std = std.transform(y_train)

  #4.進行算法 #超參數

  knn = KNeighborsClassifier(n_neighbors=5)

  #構造一些參數的值進行搜索

  param = {"n_neighbors":[3,5,10]}

  #進行網格搜索

  gc = GridSearchCV(knn,param_grid=param,cv=2)

  gc.fit(x_train,y_train)

  #預測正確率

  print("在測試集上正確率:",gc.score(x_test,y_test))

  print("在交叉集上最好的結果:",gc.best_score_)

  print("選擇最好的模型是:",gc.best_estimator_)

  print("每個超參數每次交叉驗證的結果:",gc.cv_results_)

  return None

  if __name__ == "__main__":

  knn()

  結果:

  

KNN算法調優


  從結果看出,最后的模型中,參數K取的值為10


向AI問一下細節

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

knn
AI

涟水县| 濮阳市| 连平县| 钟祥市| 旺苍县| 库尔勒市| 松原市| 荥阳市| 清水河县| 延津县| 新昌县| 勃利县| 舟山市| 北川| 思南县| 阿拉善左旗| 敦煌市| 竹山县| 涟水县| 临沧市| 萝北县| 子长县| 漠河县| 漯河市| 天等县| 盈江县| 玛沁县| 玛曲县| 阿克苏市| 惠安县| 梨树县| 盱眙县| 土默特右旗| 醴陵市| 贵溪市| 介休市| 永靖县| 铜鼓县| 嘉义市| 微山县| 彰化市|