機器學習之模型的選擇與調優

2021-10-10 01:33:45 字數 3089 閱讀 5113

交叉驗證:將拿到的資料,分為訓練和驗證集。以下圖為例:將資料分成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')

print

(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表示行

print

(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)

# **準確率

print

("在測試集上準確率:"

, gc.score(x_test, y_test)

)print

("在交叉驗證當中最好的結果:"

, gc.best_score_)

print

("選擇最好的模型是:"

, gc.best_estimator_)

print

("每個超引數每次交叉驗證的結果:"

, 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次 組 的測試,每次都更換不同的驗...