第八課 機器學習簡單介紹
第九節 模型選擇
# 引入包
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
from sklearn.svm import linearsvc
# k近鄰距離演算法
knn_model = kneighborsclassifier(
)# 線性svm
svc_model = linearsvc(
)訓練模型
# 在訓練集上使用不同的模型進行訓練
knn_model.fit(x_train, y_train)
kneighborsclassifier(algorithm=
'auto'
, leaf_size=
30, metric=
'minkowski'
, metric_params=
none
, n_jobs=
1, n_neighbors=
5, p=2,
weights=
'uniform'
)svc_model.fit(x_train, y_train)
linearsvc(c=
1.0, class_weight=
none
, dual=
true
, fit_intercept=
true
, intercept_scaling=
1, loss=
'squared_hinge'
, max_iter=
1000
, multi_class=
'ovr'
, penalty=
'l2'
, random_state=
none
, tol=
0.0001
, verbose=0)
測試模型
# 在測試集上測試模型
acc1 = knn_model.score(x_test, y_test)
acc2 = svc_model.score(x_test, y_test)
print
('knn模型的準確率:'
, acc1)
print
('線性svm模型的準確率:'
, acc2)
knn模型的準確率: 0.96
線性svm模型的準確率: 0.92
機器學習模型的選擇
首先明白乙個事實,那就是如果我們在某個訓練集上訓練擬合得到乙個模型,那麼顯然,這個模型在這個訓練集上的訓練錯誤很有可能會比實際上的泛化錯誤 generalization error 會低 模型overfitting 假如我們把資料集分成 訓練集 和 測試集。然後,在訓練集上訓練得到幾個模型,我們想從...
機器學習模型 知乎 機器學習 模型選擇與評價
交叉驗證 首先選擇模型最簡單的方法就是,利用每一種機器學習演算法 邏輯回歸 svm 線性回歸等 計算訓練集的損失值,然後選擇其中損失值最小的模型,但是這樣是不合理的,因為當訓練集不夠 特徵過多時容易過擬合,那麼訓練集的損失值就會不斷變小,但是此時針對測試集可能損失值很高,所以訓練集上的損失值是無法衡...
機器學習 模型評估與選擇
1.擬合 接近目標的遠近程度。過擬合 學習能力過強導致過於擬合。過於學習學到認為女生必須是長頭髮。欠擬合 學習能力低下導致欠擬合。學習能力低下,擁有長髮的都是女生。2.評估方法 目標 所選模型的泛化誤差最小 一 留出法 step 1 將資料集d 互斥 的分成訓練集s和測試集t,d sut。step ...