1. 程式人生 > >python 利用庫sklearn 中的 grid_search對svm 引數尋優(借鑑)

python 利用庫sklearn 中的 grid_search對svm 引數尋優(借鑑)

import time  
from sklearn import metrics  
import numpy as np  
import pickle 
from sklearn.tree import DecisionTreeClassifier
 
def svm_cross_validation(val_x, val_y):  
    from sklearn.grid_search import GridSearchCV  
    from sklearn.svm import SVC  
    model = SVC(kernel='rbf', probability=True)  
    param_grid = {'C': [ 1e-1, 1, 10], 'gamma': [0.001]}  
    grid_search = GridSearchCV(model, param_grid, n_jobs = 1, verbose=1)  
    grid_search.fit(train_x, train_y)  
    best_parameters = grid_search.best_estimator_.get_params()  
    for para, val in best_parameters.items():  
        print(para, val)  
    model = SVC(kernel='rbf', C=best_parameters['C'], gamma=best_parameters['gamma'], probability=True)  
    model.fit(train_x, train_y)  
    return model  
  

def read_data(data_file):  
    import gzip  
    f = gzip.open(data_file, "rb")  
    train, val, test = pickle.load(f,encoding='latin1')  
    f.close()  
    train_x = train[0]  
    train_y = train[1] 
    val_x = val[0]
    val_y=val[1]
    test_x = test[0]  
    test_y = test[1]  

    return train_x, train_y, test_x, test_y, val_x, val_y

if __name__ == '__main__':  
    data_file = "D:/Users/咖啡豆/Anaconda/Sklearn/Mnist/mnist.pkl.gz"  
    thresh = 0.5  
    model_save_file = None  
    model_save = {}  
      
    test_classifiers = ['SVMCV']
    classifiers = {'SVMCV':svm_cross_validation
    }  
      
    print('reading training and testing data...')  
    train_x, train_y, test_x, test_y, val_x,val_y= read_data(data_file)  
    num_train, num_feat = train_x.shape  
    num_test, num_feat = test_x.shape  
    is_binary_class = (len(np.unique(train_y)) == 2)  
    print('******************** Data Info *********************')  
    print('#training data: %d, #testing_data: %d, dimension: %d' % (num_train, num_test, num_feat))  
      
    for classifier in test_classifiers:  
        print('******************* %s ********************' % classifier)   
        start_time = time.time()  
        model = classifiers[classifier](train_x, train_y)  
        print ('training took %fs!' % (time.time() - start_time))  
        predict = model.predict(test_x)  
        if model_save_file != None:  
            model_save[classifier] = model  
        if is_binary_class:  
            precision = metrics.precision_score(test_y, predict)  
            recall = metrics.recall_score(test_y, predict)  
            print('precision: %.2f%%, recall: %.2f%%' % (100 * precision, 100 * recall))   
        accuracy = metrics.accuracy_score(test_y, predict)  
        print('accuracy: %.2f%%' % (100 * accuracy))   
  
    if model_save_file != None:  
        pickle.dump(model_save, open(model_save_file, 'wb'))

相關推薦

python 利用sklearn grid_searchsvm 引數借鑑

import time   from sklearn import metrics   import numpy as np   import pickle  from sklearn.tree import DecisionTreeClassifier   def svm

機器學習sklearn整合學習模型引數釋義

''' scikit-learn基於AdaBoosts演算法提供了兩個模型: 1.AdaBoostClassifier用於解決分類問題 2.AdaBoostRegressor用於解決迴歸問題 ''' from sklearn.ensemble import AdaBoostC

Python 爬取網頁JavaScript動態添加的內容

python tab sta exe div int rom ava script 使用 selenium + phantomjs 實現 1、準備環境 selenium(一個用於web應用程測試的工具)安裝:pip install seleniumphantomjs(是

Python實現刪除列表滿足一定條件的元素示例

http://www.jb51.net/article/115953.htm 本文例項講述了Python實現刪除列表中滿足一定條件的元素。分享給大家供大家參考,具體如下: 從列表中刪除滿足一定條件的元素。 如:刪除一個列表中長度為0的元素,或者刪除列表中同時是2和3的倍數的元素。 做過高階語言程式設計的人想

python讀取excel檔案所有sheet表格:openpyxl模組

通過openpyxl模組 迴圈遍歷excel檔案中所有sheet表格。 excel檔案 e:\\t.xlsx ,有2個sheet:   sales 客戶編碼 年月 銷售額(萬元) JLF0001 20

libsvm學習記錄svm引數

基於GridSearch的svm引數尋優 http://www.matlabsky.com/thread-12411-1-1.html 還有以下兩種 沒有解釋 只有程式碼 直接見原連結 交叉驗證(CrossValidation)方法思想簡介以下簡稱交叉驗證(Cross

pythonsklearn的一些函數更新ing...

算法 str type 文檔 blog and 類別 num ont sklearn是python的重要機器學習庫,其中封裝了大量的機器學習算法,如:分類、回歸、降維以及聚類;還包含了監督學習、非監督學習、數據變換三大模塊。sklearn擁有完善的文檔,使得它具有了上手容易

python機器學習sklearn——支援向量機svm

支援向量機的優勢在於: 在高維空間中非常高效.即使在資料維度比樣本數量大的情況下仍然有效. 在決策函式(稱為支援向量)中使用訓練集的子集,因此它也是高效利用記憶體的. 通用性: 不同的核函式與特定的決策函式一一對應.常見的 kernel 已經提供,也

python - pandas或者sklearn如何將字符形式的標簽數字化

tail article end post blog 數字化 das body 數字 參考:http://www.php.cn/wenda/91257.html     https://www.cnblogs.com/king-lps/p/7846414.html     

Python擴充套件numpywhere()函式的三種用法 Python擴充套件numpywhere()函式的三種用法

原 Python擴充套件庫numpy中where()函式的三種用法 2018年06月25日 07:43:56 Python_小屋 閱讀數:1000

python閉包的理解2

上一篇介紹了閉包的概念,這一篇介紹下閉包的使用過程中需要注意的問題。 def count(): fs = [] for i in range(1,4): def f(): return i*i fs.append(f)

python閉包的理解1

今天聊下python中閉包的用法,首先它是在函式內再定義一個函式,內部定義的函式可以引用外部函式的引數和區域性變數,在呼叫外部函式時返回的是內部函式,但是不會立馬執行內部函式的程式體,需要單獨呼叫內部函式才會去執行。下面的程式就是閉包 首先正常定義一個求和函式: def sum(*args)

SVM引數引數介紹以及python實現GASVM引數的優化

  最近開始玩起了機器學習,以前都是用matlab做一些機器學習的東西,畢竟要真正放到工程上應用還是python用起來比較好,所以今天就開始學習下使用SVM進行迴歸(分類)預測。 SVM 使用的一般步驟是: 1)準備資料集,轉化為 SVM支援的資料格式 : [label] [ind

Python常用urlliburllib.request模組使用詳解

 1.urllib2和urllib庫的區別           Urllib庫是Python中的一個功能強大、用於操作URL,並在做爬蟲的時候經常要用到的庫。在Python2.x中,分為Urllib庫和Urllin2庫,P

利用redis快取 list集合的資料 進行分頁操作

先說 儲存的結構:  這裡做了兩塊快取  綠色是儲存索引的快取  黑色是存資料的快取 翻頁時需要兩個引數  向上查詢/或向下查詢    還一個是   從第二頁開始查詢時需要一個索引的引數 有了這兩個引數 就可以利用redis 中提供的方法進行操作 第一個是 jedis.z

opencvSVM圖像分類

proc 文本 c_str lec 源碼 open right tle 特征描述 opencv中的SVM圖像分類(二) 標簽: svm圖像 2015-07-30 08:45 8296人閱讀 評論(35) 收藏 舉報 分類: 【opencv應用】(5) 版

mysql數據關於內連接、外鏈接on where having的用法。轉載

cell 顯示 null align 工作 orm 最終 mysql 表數據 SQL中on條件與where條件的區別 數據庫在通過連接兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給用戶。 在使用left jion時

jQuery 標簽元素操作1

刪除節點 empty 創建元素 標簽 bubuko img rem 元素 清空 一:創建元素節點(添加) 創建元素節點並且把節點作為元素的子節點添加到DOM樹上 append(): 在元素下添加元素 用法:$("id").append("定義的節點");

采用短網址生成方法,生成一個唯一的短字符串。 然後保存到數據,與源數據一一對應,新的系統,從數據取到相應的數據

hash parseint uid += 不用 裏的 我想 ger vrf /** * 短網址生成方法 * 這個方法會,生成四個短字符串,每一個字符串的長度為6 * 這個方法是從網上搜索的一個方法,但不知道出自何處了,稍微將key換了一下

WPF 添加 Resources Dictionary 資源 一般類項目無法添加資源文件ResourceDictionary

右鍵 edi blog eba wan 類庫 src cti 分享圖片 原文:WPF 添加 Resources Dictionary 資源 一般類庫項目中無法添加資源文件(ResourceDictionary)在文件夾或者項目右鍵-> Add(添加),會彈出可以快捷