Machine learning : 綜述
通常梆暮,一個(gè)機(jī)器學(xué)習(xí)問題是通過n個(gè)樣本數(shù)據(jù)去預(yù)測或是發(fā)現(xiàn)一些未知的數(shù)據(jù)。如果每個(gè)樣本是由超過一個(gè)的數(shù)據(jù)組成顽决,那么我們稱組成該數(shù)據(jù)有一些熟悉或者特征每辟。
-
機(jī)器學(xué)習(xí)問題按照目的一般可以分為一下兩類:
- 分類問題
所謂分類問題叶堆,是指已知輸入數(shù)據(jù)塔淤,要判斷數(shù)據(jù)屬于哪一類摘昌,要求屬于同類的數(shù)據(jù)具有預(yù)先定義的相似性。 - 回歸問題
回歸問題本質(zhì)上和分類問題并沒有什么很大不同高蜂,為已知輸入數(shù)據(jù)求輸出數(shù)據(jù)聪黎,區(qū)別在于,分類問題的預(yù)測屬性是離散值妨马,而回歸問題的預(yù)測屬性是連續(xù)值挺举。 -
還可以分為下面這兩類:
- 監(jiān)督問題
監(jiān)督問題是指需要一部分輸入數(shù)據(jù)及對應(yīng)的輸出數(shù)據(jù)來訓(xùn)練學(xué)習(xí)模型。 - 非監(jiān)督問題
非監(jiān)督問題是指只需要輸入數(shù)據(jù)而不必有對應(yīng)的輸出數(shù)據(jù)烘跺。
訓(xùn)練集與驗(yàn)證集
機(jī)器學(xué)習(xí)本質(zhì)上是通過已知的一些數(shù)據(jù)的特征來應(yīng)用于未知的數(shù)據(jù)湘纵,為了證明模型的正確性,通常需要準(zhǔn)備兩個(gè)數(shù)據(jù)集:訓(xùn)練集和驗(yàn)證集滤淳。訓(xùn)練集是用來訓(xùn)練模型梧喷,讓模型學(xué)習(xí)這些數(shù)據(jù)的特征;驗(yàn)證集是用來檢驗(yàn)訓(xùn)練后的模型的正確性脖咐。
1 獲取數(shù)據(jù)及數(shù)據(jù)的預(yù)處理
現(xiàn)實(shí)世界的數(shù)據(jù)大都不能直接用來分析铺敌,在分析之前需要進(jìn)行數(shù)據(jù)清理、數(shù)據(jù)轉(zhuǎn)換屁擅、數(shù)據(jù)集成等預(yù)處理步驟后才能使用偿凭。
詳情見我的另一篇文章python data analysis | python數(shù)據(jù)預(yù)處理(基于scikit-learn模塊)
2 模型的學(xué)習(xí)和預(yù)測
- 選擇模型
根據(jù)數(shù)據(jù)的不同及問題的不同需求來選擇要用的模型,下面一張圖片可以提供選擇模型時(shí)的參考
Choosing the right estimator — scikit-learn 0.17.1 documentation
- 選擇參數(shù)
我們希望學(xué)習(xí)的模型是最小化誤差的派歌,所以可以選擇備選的參數(shù)空間弯囊,然后用交叉驗(yàn)證的方法產(chǎn)生訓(xùn)練集合驗(yàn)證集來對不同參數(shù)的模型效果進(jìn)行評估,選擇一個(gè)最好的模型胶果。
3 訓(xùn)練模型的保存
因?yàn)?strong>Python每次關(guān)閉都會(huì)清空使用內(nèi)存匾嘱,為了保存訓(xùn)練完成的模型,可以使用Python中的序列化模塊pickle
來進(jìn)行序列化及反序列化早抠。序列化及將內(nèi)存中的數(shù)據(jù)存儲在文件中霎烙,反序列化是指將文件中的數(shù)據(jù)轉(zhuǎn)移到內(nèi)存中。
clf表示訓(xùn)練完成的分類模型
file表示存儲的路徑
import pickle
file=open(,)
pickle.dump(clf, file])
file.close()
clf=pickle.load(file)
##4 約定
* 類型約定:
除非另有說明蕊连,否則所有的輸入數(shù)據(jù)類型將被`fit_transform(X)`轉(zhuǎn)換成`float64`類型
* 更新超參數(shù):
超參數(shù)可以理解為訓(xùn)練之前的模型所需要的參數(shù)悬垃,比如k-means分類方法中的k就是一個(gè)超參數(shù)。超參數(shù)的修改可以用下面這種格式修改
`clf.set-params(param1=*p1*,param2=*p2*,...) #param1是具體的超參數(shù)名稱咪奖,*p1*等是選擇參數(shù)數(shù)值`
#####本文信息參考[scikit-learn官方文檔](http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html)