第八課 機器學習簡單介紹
第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(
('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'
)# 測試模型
(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_
# 測試模型
(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 超引數優化 這是機器學習模型解決問題的最後乙個步驟,並不是整個解決方案的最後一步。不會調參就不能說會機器學習。引數...