交叉驗證:將拿到的資料,分為訓練和驗證集。以下圖為例:將資料分成4份,其中乙份作為驗證集。然後經過4次(組)的測試,每次都更換不同的驗證集。即得到4組模型的結果,取平均值作為最終結果。又稱4折交叉驗證。
通常情況下,有很多引數是需要手動指定的 (如k-近鄰演算法中的k值),這種叫超引數。但是手動過程繁雜,所以需要對模型預設幾種超引數組合。每組超引數都採用交叉驗證來進行評估。最後選出最優引數組合建立模型。
k-近鄰**使用者簽到位置
:return:none
"""# 讀取資料
data = pd.read_csv(
"./data/fblocation/train.csv"
)# print(data.head(10))
# 處理資料
# 1、縮小資料,查詢資料曬訊
data = data.query(
"x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75"
)# 處理時間的資料
time_value = pd.to_datetime(data[
'time'
], unit=
's')
(time_value)
# 把日期格式轉換成 字典格式
time_value = pd.datetimeindex(time_value)
# 構造一些特徵
data[
'day'
]= time_value.day
data[
'hour'
]= time_value.hour
data[
'weekday'
]= time_value.weekday
# 把時間戳特徵刪除
data = data.drop(
['time'
], axis=1)
# axis=1表示列,按照列刪除,axis=0表示行
(data)
# 把簽到數量少於n個目標位置刪除
place_count = data.groupby(
'place_id'
).count(
) tf = place_count[place_count.row_id >3]
.reset_index(
) data = data[data[
'place_id'
].isin(tf.place_id)
]# 取出資料當中的目標值和特徵值
y = data[
'place_id'
]# y為目標值
x = data.drop(
['place_id'
], axis=1)
# x為特徵值
# 進行資料的分割訓練集合測試集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=
0.25
)# 特徵工程(標準化)
std = standardscaler(
)# 對測試集和訓練集的特徵值進行標準化
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
# 進行演算法流程 # 超引數
knn = kneighborsclassifier(
)# # fit, predict,score
# knn.fit(x_train, y_train)
## # 得出**結果
# y_predict = knn.predict(x_test)
## print("**的目標簽到位置為:", y_predict)
## # 得出準確率
# print("**的準確率:", knn.score(x_test, y_test))
# 構造一些引數的值進行搜尋
param =
# 進行網格搜尋
gc = gridsearchcv(knn, param_grid=param, cv=2)
gc.fit(x_train, y_train)
# **準確率
("在測試集上準確率:"
, gc.score(x_test, y_test)
("在交叉驗證當中最好的結果:"
, gc.best_score_)
("選擇最好的模型是:"
, gc.best_estimator_)
("每個超引數每次交叉驗證的結果:"
, gc.cv_results_)
return
none
if __name__ ==
"__main__"
: knncls(
)輸出的結果為:
機器學習之模型選擇與調優
交叉驗證 將拿到的訓練資料,分為訓練和驗證集。以下圖為例 將資料分成5份,其中乙份作為驗證集。然後經過5次 組 的測試,每次都更換不同的驗證集。即得到5組模型的結果,取平均值作為最終結果。又稱5折交叉驗證。五折交叉驗證,就是分成5份,三份訓練,乙份驗證,乙份測試 我們之前知道資料分為訓練集和測試集,...
Spark機器學習 模型選擇與引數調優之交叉驗證
機器學習可以簡單的歸納為 通過資料訓練y f x 的過程,因此定義完訓練模型之後,就需要考慮如何選擇最終我們認為最優的模型。如何選擇最優的模型,就是本篇的主要內容 在 統計學習方法 這本書中,曾經講過模型驗證的方法有三種,分別是簡單的交叉驗證,s折交叉驗證,留一交叉驗證 即把全部資料按照比例分割成兩...
機器學習全套教程(十) 模型選擇與調優
python爬蟲人工智慧教程 www.python88.cn 程式設計資源網 www.python66.cn 應用 交叉驗證目的 為了讓被評估的模型更加準確可信 交叉驗證 將拿到的訓練資料,分為訓練和驗證集。以下圖為例 將資料分成5份,其中乙份作為驗證集。然後經過5次 組 的測試,每次都更換不同的驗...