機器學習 模型調參

2021-10-22 23:19:30 字數 2987 閱讀 8495

第八課 機器學習簡單介紹

第13節 模型調參方法

# 引入包

import pandas as pd

import numpy as np

from sklearn.model_selection import train_test_split

準備資料集

# 載入資料

iris_data = pd.read_csv(

'./dataset/iris.csv'

)# 獲取特徵

x = iris_data[

['sepal_length'

,'sepal_width'

,'petal_length'

,'petal_width']]

.values

# 獲取標籤

y = iris_data[

'label'

].values

# 劃分資料集

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=1/

3, random_state=10)

建立模型

from sklearn.neighbors import kneighborsclassifier

# k近鄰距離演算法

knn_model = kneighborsclassifier(

)交叉驗證

from sklearn.model_selection import cross_val_score

# k近鄰距離演算法

k_list =[1

,3,5

,7,9

]for k in k_list:

knn_model = kneighborsclassifier(n_neighbors=k)

#拿到三個值的得分

val_scores = cross_val_score(knn_model, x_train, y_train, cv=3)

val_score = val_scores.mean(

)print

('k={}, acc={}'

.format

(k, val_score))k=

1, acc=

0.9408098845598846k=3

, acc=

0.9604347041847042k=5

, acc=

0.9601190476190476k=7

, acc=

0.9503336940836942k=9

, acc=

0.9503336940836942

# 選擇最優引數,重新在所有資料上訓練模型

best_knn = kneighborsclassifier(n_neighbors=3)

best_knn.fit(x_train, y_train)

kneighborsclassifier(algorithm=

'auto'

, leaf_size=

30, metric=

'minkowski'

, metric_params=

none

, n_jobs=

1, n_neighbors=

3, p=2,

weights=

'uniform'

)# 測試模型

print

(best_knn.score(x_test, y_test)

)0.96

網格搜尋

from sklearn.model_selection import gridsearchcv

params =

knn = kneighborsclassifier(

)clf = gridsearchcv(knn, params, cv=3)

clf.fit(x_train, y_train)

gridsearchcv(cv=

3, error_score=

'raise'

, estimator=kneighborsclassifier(algorithm=

'auto'

, leaf_size=

30, metric=

'minkowski'

, metric_params=

none

, n_jobs=

1, n_neighbors=

5, p=2,

weights=

'uniform'),

fit_params=

none

, iid=

true

, n_jobs=1,

param_grid=

, pre_dispatch=

'2*n_jobs'

, refit=

true

, return_train_score=

'warn'

, scoring=

none

, verbose=0)

# 最優引數

clf.best_params_

# 最優模型

# 注意:gridsearchcv缺省會使用最優的引數自動重新訓練,所以不需要手工操作(refit=true)

best_model = clf.best_estimator_

# 測試模型

print

(best_model.score(x_test, y_test)

)0.96

機器學習 調參

在實際調整引數之前,我們先要搞清楚兩個事情 1.調參的目的是什麼?2.調參調的東西具體是什麼?第乙個問題 調參的目的是什麼?調參的最終目的是要使訓練之後的模型檢測物體更精確,向程式的方向更靠近一步的話,就是使得損失函式 例如ssd中的loss 盡量小 因為利用訓練集訓練出來的模型質量在訓練過程中只能...

機器學習 關於調參

關於引數 feature scaling 機器學習中對於引數的理解不是數學中的數字,而是代表的是一種邏輯的趨勢的數字,這種邏輯是人類對場景的邏輯,也可以看作是人思想上對場景與數字引數的經驗,所以機器學習中的運算,不是數字的運算,而是邏輯的運算,如何設計出符合人類邏輯規律的運算,才能更好的 趨勢,這種...

機器學習 演算法調參

coding utf 8 演算法調參.ipynb automatically generated by colaboratory.original file is located at 超引數優化 這是機器學習模型解決問題的最後乙個步驟,並不是整個解決方案的最後一步。不會調參就不能說會機器學習。引數...