1. 程式人生 > >機器學習精簡教程之九——用scikit-learn的網格搜尋快速找到最優模型引數

機器學習精簡教程之九——用scikit-learn的網格搜尋快速找到最優模型引數

本文轉自:http://www.shareditor.com/blogshow/?blogId=60

任何一種機器學習模型都附帶很多引數,不同場景對應不同的最佳引數,手工嘗試各種引數無疑浪費很多時間,scikit-learn幫我們實現了自動化,那就是網格搜尋 。

網格搜尋

這裡的網格指的是不同引數不同取值交叉後形成的一個多維網格空間。比如引數a可以取1、2,引數b可以取3、4,引數c可以取5、6,那麼形成的多維網格空間就是
1、3、5 1、3、6 1、4、5 1、4、6 2、3、5 2、3、6 2、4、5 2、4、6 一共2*2*2=8種情況 網格搜尋就是遍歷這8種情況進行模型訓練和驗證,最終選擇出效果最優的引數組合

用法舉例

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model.logistic import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.pipeline import Pipeline

# 構造樣本,這塊得多構造點,不然會報class不足的錯誤,因為gridsearch會拆分成小組
X = []
X.append("fuck you")
X.append("fuck you all")
X.append("hello everyone")
X.append("fuck me")
X.append("hello boy")
X.append("fuck you")
X.append("fuck you all")
X.append("hello everyone")
X.append("fuck me")
X.append("hello boy")
X.append("fuck you")
X.append("fuck you all")
X.append("hello everyone")
X.append("fuck me")
X.append("hello boy")
X.append("fuck you")
X.append("fuck you all")
X.append("hello everyone")
X.append("fuck me")
X.append("hello boy")
X.append("fuck you")
X.append("fuck you all")
X.append("hello everyone")
X.append("fuck me")
X.append("hello boy")

y = [1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1]

# 這是執行的序列,gridsearch是構造多程序順序執行序列並比較結果
# 這裡的vect和clf名字自己隨便起,但是要和parameters中的字首對應
pipeline = Pipeline([
    ('vect', TfidfVectorizer(stop_words='english')),
    ('clf', LogisticRegression())
    ])

# 這裡面的max_features必須是TfidfVectorizer的引數, 裡面的取值就是子程序分別執行所用
parameters = {
        'vect__max_features': (3, 5),
        }

# accuracy表示按精確度判斷最優值
grid_search = GridSearchCV(pipeline, parameters, n_jobs = -1, verbose = 1, scoring = 'accuracy', cv = 3)
grid_search.fit(X, y)

print '最佳效果: %0.3f' % grid_search.best_score_
print '最優引數組合: '
best_parameters = grid_search.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):
    print('\t%s: %r' % (param_name, best_parameters[param_name]))

我的輸出報錯了

相關推薦

機器學習精簡教程——scikit-learn網格搜尋快速找到模型引數

本文轉自:http://www.shareditor.com/blogshow/?blogId=60 任何一種機器學習模型都附帶很多引數,不同場景對應不同的最佳引數,手工嘗試各種引數無疑浪費很多時間,scikit-learn幫我們實現了自動化,那就是網格搜尋 。 網格

機器學習精簡教程七——scikit-learn做特徵提取

本文轉自:http://www.shareditor.com/blogshow/?blogId=58 現實世界中多數特徵都不是連續變數,比如分類、文字、影象等,為了對非連續變數做特徵表述,需要對這些特徵做數學化表述,因此就用到了特徵提取 (特徵數字化) 分類變數的特徵提

十、scikit-learn網格搜尋快速找到模型引數

任何一種機器學習模型都附帶很多引數,不同場景對應不同的最佳引數,手工嘗試各種引數無疑浪費很多時間,scikit-learn幫我們實現了自動化,那就是網格搜尋 網格搜尋 這裡的網格指的是不同引數不同取值交叉後形成的一個多維網格空間。比如引數a可以取1、2,引數b可以取3、4,引數c可以取5、6,那麼形

機器學習精簡教程四——matplotlib繪製精美的圖表

本文轉自:http://www.shareditor.com/blogshow/?blogId=55 繪製一元函式影象y=ax+b import matplotlib.pyplot as plt import numpy as np plt.figure() # 例

終於在pycharm下(Python3.6.1版本)安裝完成機器學習相關庫檔案(sklearn scikit-learn gensim xgboost tensorflow nltk )

安裝scikit-learn請參考本人的相應部落格,這個是最為難安裝的。其他的大部分能夠直接通過pycharm的settings安裝。 由於安裝部分庫檔案時,會附帶安裝其他庫檔案,因此在整體安裝完成後,庫檔案還是挺多的。安裝後的整體庫包括如圖所示

python機器學習包 Windows下 pip安裝 scikit-learn numpy scipy

1.到PIP的目錄中C:\Python34\Scripts;2. 2.1  pip安裝numpy pip install numpy 2.2  pip安裝sklearn pip install -U scikit-learn   2.3  pip安裝scipy(注:sklearn 依賴

機器學習實戰教程(十二):線性迴歸提高篇樂高玩具套件二手價預測

一、前言 本篇文章講解線性迴歸的縮減方法,嶺迴歸以及逐步線性迴歸,同時熟悉sklearn的嶺迴歸使用方法,對樂高玩具套件的二手價格做出預測。 二、嶺迴歸 如果資料的特徵比樣本點還多應該怎麼辦?很顯然,此時我們不能再使用上文的方法進行計算了,因為矩陣X不是滿秩矩陣,非

scikit-learn掌握機器學習(三)特徵提取和預處理

從分類資料中提取特徵 from sklearn.feature_extraction import DictVectorizer onehot_encoder = DictVectorizer() #字典轉onehot用DictVectorizer() i

機器學習實戰教程(三):決策樹實戰篇為自己配個隱形眼鏡

原文連結:cuijiahua.com/blog/2017/1… 一、前言 上篇文章機器學習實戰教程(二):決策樹基礎篇之讓我們從相親說起講述了機器學習決策樹的原理,以及如何選擇最優特徵作為分類特徵。本篇文章將在此基礎上進行介紹。主要包括: 決策樹構建 決策樹視覺化 使用決

機器學習實戰(Scikit-learn和TensorFlow進行機器學習)(三)

  上一節講述了真實資料(csv表格資料)訓練集的檢視與預處理以及Pineline的基本架構。今天接著往下進行實戰操作,會用到之前的資料和程式碼,如果有問題請檢視上一節。 三、開始實戰 7、選擇及訓練模型   首先嚐試訓練一個線性迴歸模型(Line

機器學習實戰教程(五):樸素貝葉斯實戰篇新浪新聞分類

原文連結: Jack-Cui,https://cuijiahua.com/blog/2017/11/ml_5_bayes_2.html 一、前言 上篇文章機器學習實戰教程(四):樸素貝葉斯基礎篇之言論過濾器講解了樸素貝葉斯的基礎知識。本篇文章將在此基礎上進行擴充套件,你將看到以下內容: 拉普拉

機器學習實戰教程(四):樸素貝葉斯基礎篇言論過濾器

word 最可 dog 一個 mac github上 開課 和數 基礎上 原文鏈接: Jack-Cui,https://cuijiahua.com/blog/2017/11/ml_4_bayes_1.html 一、前言 樸素貝葉斯算法是有監督的學習算法,解決的是分類問題,

Django教程-----高階教程:如何編寫複的應用

這個教程緊接(7),我們將我們的網頁問卷調查變成一個單獨的python包,你可以在新專案中重用它,也可以和其他人分享。 如果你沒有完成教程1-7,我們鼓勵你來複習這些所以你的例子專案符合下面的描述。 1. 可重用性很重要 設計,建立,測試和維護一個web應用有很多工作要

機器學習整合學習(三)AdaBoost演算法scikit-learn

一、AdaBoost類庫概述         scikit-learn中AdaBoost類庫比較直接,就是AdaBoostClassifier和AdaBoostRegressor兩個,從名字就可以看出AdaBoostClassifier用於分類,AdaBoostRegr

機器學習(ML)GRU、LSTM、深度神經網路、雙向迴圈神經網路

門控迴圈單元(GRU) 迴圈神經網路中的梯度計算方法。當時間步數較大或者時間步較小時,迴圈神經網路的梯度較容易出現衰減或爆炸。雖然裁剪梯度可以應對梯度爆炸,但無法解決梯度衰減的問題。通常由於這個原因,迴圈神經網路在實際中較難捕捉時間序列中時間步距離較大的依賴關係。 門控迴圈神經網路(gated recurre

scikit-learn學習LDA主題模型

大小 href 房子 鏈接 size 目標 文本 訓練樣本 papers     在LDA模型原理篇我們總結了LDA主題模型的原理,這裏我們就從應用的角度來使用scikit-learn來學習LDA主題模型。除了scikit-learn, 還有spark MLlib和gen

人工智能與機器學習的不同

沒有 機器學習 決定 深度學習 支持向量 傳統 模擬 性能 處理 人工智能早已不是一個新名詞,它的發展歷史已經有幾十年。從80年代早期開始,當時計算機科學家設計出可以學習和模仿人類行為的算法。在學習方面,最重要的算法是神經網絡,但由於模型過於強大,沒有足夠的數據支持,導致不

機器學習原來如此有趣:深度學習識別人臉

twitter 細節 變形 infer main 依次 外部 mbed 小時 本系列文章目前已經更新兩期,分別是: 機器學習原來如此有趣!全世界最簡單的機器學習入門指南、 機器學習原來如此有趣:如何故意欺騙神經網絡 你是否有註意到Facebook最近開發了一個非同尋

機器學習數學基礎矩陣理論(三)

gis 引入 定義 增加 2017年 理論值 nbsp 得到 正數 矩陣求導 目錄 一、 矩陣求導的基本概念 1. 一階導定義 2. 二階導數 二、 梯度下降 1. 方向導數. 1.1 定義 1.2 方向導數的計算公式. 1.3 梯度下降最快的方向 1.

機器學習實戰(一)—— 線性回歸預測波士頓房價

-1 png 機器學習 mage 回歸 線性回歸 blog 分享 機器 機器學習實戰(一)—— 用線性回歸預測波士頓房價