sklearn 之一般流程及模型

  Scikit-learn(sklearn)是機器學習中常用的第三方模塊,對常用的機器學習方法進行了封裝,包括迴歸(Regression)、降維(Dimensionality Reduction)、分類(Classfication)、聚類(Clustering)等方法。

  參考這篇文章的代碼:

  【Sklearn】入門花卉數據集實驗–理解樸素貝葉斯分類器

  0.sklearn運行流程

  數據集處理

  數據集加載 X=[],標籤Y=[] , 比例X:Y=1:1

  數據集分類 train_test_split ->(X_train,X_test,y_train,y_test)

  特徵提取

  特徵提取(直方圖、輪廓描述子…特徵數組)

  訓練模型

  特徵分類(構造分類器(lr線性分類,svm支持向量機分類,beyes貝葉斯分類…))

  用訓練數據(X_train,y_train)擬合分類器模型 、保存模型

  預測

  預測 result = predit(X_test)

  分析 classification_report (result)

  1.數據集

  數據集處理中我們常用到:

  datasets : 是sklearn庫自帶的數據集(iris鳶尾花數據等),前期學習非常友好

  train_test_split 將數據分爲測試集和訓練集

  from sklearn import datasets#引入數據集,sklearn包含衆多數據集

  from sklearn.model_selection import train_test_split#將數據分爲測試集和訓練集

  iris = datasets.load_iris()#引入iris鳶尾花數據,iris數據包含4個特徵變量

  X = iris.data # 特徵變量

  y = iris.target # 目標值

  X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3, random_state=1)#利用train_test_split進行將訓練集和測試集進行分開,test_size佔30%

  print(y_train)#我們看到訓練數據的特徵值分爲3類

  2.模型

  Sklearn的模型導出本質上是利用Python的Pickle機制。對Python的函數進行序列化,也就是把訓練好的Transformer函數序列化並存爲文件。

  .pkl

  pkl文件是python裏面保存文件的一種格式,如果直接打開會顯示一堆序列化的東西。

  import pickle

  # 重點是rb和r的區別,rb是打開2進制文件,文本文件用r

  f = open('test.pkl','rb')

  data = pickle.load(f)

  print(data)

  參考這篇文章:sklearn 中模型保存的兩種方法

  既然joblib在使用上比較容易,讀取速度也相對pickle快,那麼我們後面就用joblib進行討論。

  .m

  1. 保存 、讀取、預測

  from sklearn.externals import joblib

  joblib.dump(lr, 'lr.model') # 保存 lr是一個LogisticRegression模型

  lr = joblib.load('lr.model') # 加載

  lr.predit(test_X) # 預測 此處test_X爲特徵集

  2. 一個完整的svm分類例子

  dataset:特徵數組X,標籤Y,比例X:Y=1:1

  clf : 構造分類器(lr線性分類,svm支持向量機分類,beyes貝葉斯分類…)

  clf.fit():用訓練數據擬合分類器模型

  joblib.dump:保存模型

  joblib.load:加載模型

  clf.predit():預測

  os.chdir("workspace/model_save") # 保存Model(注:model_save文件夾要預先建立,否則會報錯)

  from sklearn.externals import joblib

  from sklearn import svm

  X = [[0, 0], [1, 1]]

  y = [0, 1]

  clf = svm.SVC() # clf是訓練的分類器

  clf.fit(X, y)

  clf.fit(train_X,train_y)

  joblib.dump(clf, "train_model.m") # 保存

  clf = joblib.load("train_model.m")

  clf.predit(test_X) #此處test_X爲特徵集

  3.封裝鄭州人流醫院哪家好 http://mobile.zhongyuan120.com/

  from sklearn.externals import joblib

  Class classificationTest():

  #保存模型

  def Save_Model(self, model, filepath):

  joblib.dump(model, filename=filepath)

  def SVM_classifier(self,x_train,y_train):

  clf = svm.SVC() # clf是訓練的分類器

  clf.fit(x_train,y_train)

  self.Save_Model(clf,"train_model.m") # 保存模型

  return clf

  def Load_Model(self, filepath):

  model = joblib.load(filepath)

  return model

  def Predict_Model(self, x_test, filpath):

  model = self.Load_Model(filepath)

  result = model.predit(x_test) # 預測

  return result

  其他模型

  其他幾種模型後綴的對比:

  .pb

  MetaGraph的protocol buffer格式的文件,MetaGraph包括計算圖,數據流,以及相關的變量和輸入輸出。

  在tensorflow訓練中直接保存爲pb爲格式,保存pb的好處就是使用場景是實現創建模型與使用模型的解耦,使得創建模型與使用模型的解耦,使得前向推導inference代碼統一。另外的好處就是保存爲pb的時候,模型的變量會變成固定的,導致模型的大小會大大減小。

  .dat

  .dat並不是一種標準文件。DATA的意思,即數據文件,這類文件並沒有進行絕對化的定義。

  在深度學習裏指存放數據的文件。

  .h5即(.hdf5)

  HDF5是一種全新的分層數據格式產品,由數據格式規範和支持庫實現組成。

  .ckpt

  這種模型文件是依賴 TensorFlow 的,只能在其框架下使用。

  checkpoint文件:用於告知某些TF函數,這是最新的檢查點文件。

  .data文件:保存圖中所有變量的值,沒有結構。

  .index文件:保存索引。

  .meta文件:保存計算圖的結構,但是不包含裏面變量的值。

  3.預測

  介紹一個sklearn中高效的分析函數:classification_report ()

  使用:

  from sklearn.metrics import classification_report


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章