1. 程式人生 > >[讀書筆記] 《Python 機器學習》- 使用巢狀交叉驗證進行模型選擇

[讀書筆記] 《Python 機器學習》- 使用巢狀交叉驗證進行模型選擇

摘要

通過巢狀交叉驗證選擇演算法(外部迴圈通過k-折等進行引數優化,內部迴圈使用交叉驗證),我們可以對特定資料集進行模型選擇

程式碼

# 6.4.2: 巢狀交叉驗證選擇演算法,用於在不同的機器學習演算法中進行選擇

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import
GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import LabelEncoder from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.tree import DecisionTreeClassifier from sklearn.pipeline import Pipeline # 匯入資料 df = pd.read_csv('./Data/UCI/wdbc.data.txt'
) # Slicing X, y = df.iloc[:, 2:].values, df.iloc[:, 1].values le = LabelEncoder() y = le.fit_transform(y) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=1) # 構造模型 pipe_svc = Pipeline([('scl', StandardScaler()), ('clf', SVC(random_state=1
))]) param_range = [10**c for c in range(-4, 4)] # param_range = np.linspace(0.0001, 1, 10) param_grid = [ {'clf__C': param_range, 'clf__kernel': ['linear']}, # 對於線性SVM只需要調優正則化引數C {'clf__C': param_range, 'clf__gamma': param_range, 'clf__kernel': ['rbf']} # 對於核SVM則需要同時調優C和gamma值 ] gs = GridSearchCV(estimator=pipe_svc, param_grid=param_grid, scoring='accuracy', cv=10, n_jobs=-1) # gs.fit(X_train, y_train) # clf = gs.best_estimator_ scores = cross_val_score(gs, X_train, y_train, scoring='accuracy', cv=5) print('CV accuracy: %.3f +/- %.3f' % (np.mean(scores), np.std(scores))) gs = GridSearchCV(estimator=DecisionTreeClassifier(random_state=0), param_grid=[{'max_depth':[1,2,3,4,5,6,7,None]}], scoring='accuracy', cv=5) scores = cross_val_score(gs, X_train, y_train, scoring='accuracy', cv=5) print('CV accuracy: %.3f +/- %.3f' % (np.mean(scores), np.std(scores)))

相關推薦

[讀書筆記] 《Python 機器學習》- 使用交叉驗證進行模型選擇

摘要 通過巢狀交叉驗證選擇演算法(外部迴圈通過k-折等進行引數優化,內部迴圈使用交叉驗證),我們可以對特定資料集進行模型選擇 程式碼 # 6.4.2: 巢狀交叉驗證選擇演算法,用於在不同的機器學習演算法中進行選擇 import matplotli

python機器學習——十次交叉驗證訓練的資料準備演算法

攝於 2017年4月21日 臺灣墾丁船帆石海灘 前言 python強大的機器學習包scikit-learn可以直接進行交叉分割,之所以寫個相當於鍛鍊自己思維。 這兩天本來打算開始寫樸素貝葉斯分類器的演算法的,由於上一篇博文python實現貝葉斯推斷

機器學習之Validation(驗證模型選擇

  對於機器學習的模型選擇來說,即使只是對於二元分類,我們已經學習了很多方法,比如PLA,LR等;很多學習演算法都是可迭代的,需要決定迭代次數;你可能還需要決定每一次迭代走多大,例如梯度下降;或者有很多

通過網格搜尋和交叉驗證尋找機器學習模型的最優引數

在機器學習的模型中,通常有兩類引數,第一類是通過訓練資料學習得到的引數,也就是模型的係數,如迴歸模型中的權重係數,第二類是模型演算法中需要進行設定和優化的超參,如logistic迴歸中的正則化係數和決策樹中的樹的深度引數等。在上一篇文章中,我們通過驗證曲線來尋找最優的超參,在

機器學習交叉驗證模型選擇Python程式碼實現

前言:本篇博文主要介紹交叉驗證(cross validation)和模型選擇,首先介紹相關的基礎概念和原理,然後通過Python程式碼實現交叉驗證和模型評估以及選擇。特別強調,其中大多理論知識來源於《統計學習方法_李航》和斯坦福課程翻譯筆記。 1.分類器的評價 評價分類

讀書筆記-《機器學習》第六章:支援向量機

支援向量機訓練完成後,大部分的訓練樣本都不需要保留,最終模型僅與支援向量有關 SMO的基本思路是先固定xi之外的所有引數,然後求xi上的極值。由於存在約束,因此SMO每次選擇兩個變數並固定其他引數

讀書筆記機器學習實戰(2)——章3的決策樹程式碼和個人理解與註釋

首先是對於決策樹的個人理解: 通過尋找最大資訊增益(或最小資訊熵)的分類特徵,從部分已知類別的資料中提取分類規則的一種分類方法。 資訊熵: 其中,log底數為2,額,好吧,圖片我從百度截的。。 這裡只解釋到它是一種資訊的期望值,深入的請看維基百科

讀書筆記機器學習實戰(5)——章6的支援向量機程式碼和個人理解與註釋

時隔好久,前幾章部落格是去年看的時候寫的,後來只看書沒有繼續寫,再後來忙著專案,連書都很少看了。然後是忙完專案後的空白期的瘋狂看書,看了很多資料結構演算法,設計模式,程式碼整潔,專案可重構方面的書。年後重新把《機器學習實戰》後面的章節讀完,現在開始整理筆記。

《大數據日知錄》讀書筆記-ch12機器學習:範型與架構

框架 梯度 目前 reduce 訓練 編程 base 屬於 parallel 機器學習算法特點:叠代運算 損失函數最小化訓練過程中,在巨大參數空間中叠代尋找最優解 比如:主題模型、回歸、矩陣分解、SVM、深度學習 分布式機器學習的挑戰: - 網絡通信效率 -

機器學習系列之交叉驗證、網格搜尋

第一部分:交叉驗證 機器學習建立和驗證模型,常用的方法之一就是交叉驗證。在機器學習過程中,往往資料集是有限的,而且可能具有一定的侷限性。如何最大化的利用資料集去訓練、驗證、測試模型,常用的方法就是交叉驗證。交叉驗證,就是重複的使用資料,對樣本資料進行劃分為多組不同的訓練集和測試集(訓練集訓練模型

機器學習演算法:交叉驗證——(監督)學習器效能評估方法 [ sklearn.model_selection.cross_val_score()官方翻譯 ]

交叉驗證——(監督)學習器效能評估方法 一、思考:交叉驗證有什麼好值得我們使用的? 每個演算法模型都需要經過兩個階段:訓練和驗證。 1) 一般情況下的,我們用的方法是:將原始資料集分為 訓練資料集 & 測試資料集。 優點:是,但僅僅是思路正確。 缺點:思

機器學習為什麼需要交叉驗證?怎麼使用k-fold cross validation(k-摺疊交叉驗證

介紹這個非常重要的概念,希望在訓練演算法時能幫助各位。概念和思維解讀叉驗證的目的:在實際訓練中,模型通常對訓練資料好,但是對訓練資料之外的資料擬合程度差。用於評價模型的泛化能力,從而進行模型選擇。交叉驗

機器學習工具之交叉驗證資料集自動劃分train_test_split

機器學習工具之交叉驗證資料集自動劃分 1. 使用方式: from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test=train_test_spli

機器學習中的交叉驗證簡介

1.什麼是交叉驗證?        交叉驗證是在實驗中的資料不充分的情況下,但是我們又想訓練出好的模型的情況下采用的措施。交叉驗證的思想:重複使用資料,把給定的資料進行拆分,將切分的資料集組合為訓練集與測試集,在此基礎上不斷反覆進行訓練、測試以及模型選擇。下邊來介紹下使用過的

Python機器學習庫sklearn裡利用LR模型進行三分類(多分類)的原理

首先,LR將線性模型利用sigmoid函式進一步做了非線性對映。 將分類超平面兩側的正負樣本點,通過壓縮函式轉化成了以0.5為分解的兩類:類別0和類別1。 這個轉化過程見下圖: 上圖給出的是線性邊界與LR分佈函式(即sigmoid函式)的對映對應關係;同樣,對於非線

Python機器學習/LinearRegression(線性回歸模型)(附源碼)

max ide 示意圖 res tree near main atp then LinearRegression(線性回歸) 2019-02-20 20:25:47 1.線性回歸簡介 線性回歸定義:   百科中解釋 我個人的理解就是:線性回歸算法就是一個使用線性函數作為模

機器學習(ML)七之模型選擇、欠擬合和過擬合

訓練誤差和泛化誤差 需要區分訓練誤差(training error)和泛化誤差(generalization error)。前者指模型在訓練資料集上表現出的誤差,後者指模型在任意一個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以使用之前介紹過的損失函式,例如線

重回機器學習-《python機器學習及實踐》讀書筆記

一.三個率         機器學習模型訓練好之後,會在樣本外進行測試,然後我們可以得到三個“率”: 準確率 召回率 精確率         其實這些也沒有什麼大不了的,大家如果學習

Python 機器學習筆記(一)

環境 成功 設定 相關 reward 能力 學習 一定的 env 賦予計算機學習數據的能力涵蓋:1.機器學習的一般概念2.機器學習方法的三種類型和基本術語3.成功構建機器學習系統所需的模塊機器學習的三種不同方法1.監督學習2.無監督學習3.強化學習通過監督學習對未來事件進行

Python 機器學習筆記(四)

構造 split logs pos 不支持 虛擬 訓練樣本 字符 cal 數據預處理——構建好的訓練數據集機器學習算法最終學習結果的優劣取決於兩個主要因素:數據的質量和數據中蘊含的有用信息的數量。缺失數據的處理在實際應用過程中,樣本由於各種原因缺少一個或多個值得情況並不少見