1. 程式人生 > >機器學習——監督學習幾種經典模型特點

機器學習——監督學習幾種經典模型特點

監督學習分為分類學習和迴歸學習,分類即從分類別中選擇一個作為結果,其結果是離散的,迴歸待預測的結果是連續的,迴歸於分類的模型大同小異,這裡只介紹分類學習
分類學習:
1、線性分類器
受限於資料特徵與分類目標之間的線性假設。LogisticRegression採用精確解析的方法,計算時間長、模型效能高,SGDClassifier採用隨機梯度上升的方法,時間短、模型效能略低。如果資料規模在10W以上,考慮到時間的耗用,最好採用後者。
2、支援向量機
其精妙的模型假設,可以讓我們在高維度的資料中,篩選對預測任務最為有效的少數訓練樣本,節省了模型學習所需的資料記憶體,
同時也提高了模型的預測效能,但是佔用更多的CPU資源和計算時間。
3、樸素貝葉斯
樸素貝葉斯模型被應用於海量網際網路文字分類任務。由於其較強的特徵條件獨立假設,使得模型預測所需要估計的引數規模從冪
指數數量級向線性級減少,減少了記憶體和計算時間,模型訓練時無法將各個特徵之間的聯絡考量在內,使得它在資料特徵關聯性
較強的分類任務上表現不佳
4、K臨近
該模型沒有引數訓練的過程,只是根據測試樣本在訓練資料的分佈直接做出來的決策,計算複雜度和記憶體消耗很高。

5、決策樹

方面了模型的視覺化,無須考慮對資料的量化和標準化的,屬於有引數模型,需要花費更多的時間在訓練資料上

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report

titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
#特徵選擇
X = titanic[['pclass','age','sex']]
y = titanic['survived']
#print(X.info())
#age需要補全,sex和pclass為類別型,需要轉化為數值特徵,用0/1代替
X['age'].fillna(X['age'].mean(),inplace=True)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
#特徵轉換
vec = DictVectorizer(sparse=False)
#凡是類別型的特徵都單獨剝離出來,形成一列特徵,數值型保持不變
X_train = vec.fit_transform(X_train.to_dict(orient='record'))
X_test = vec.transform(X_test.to_dict(orient='record'))
model = DecisionTreeClassifier()
model.fit(X_train,y_train)
y_predict = model.predict(X_test)
print(model.score(X_test,y_test))
report = classification_report(y_predict,y_test,target_names=['died', 'survived'])
print(report)
6、整合模型

集合模型整合了多種模型,或者多次就一種型別的模型進行多次建模,模型的估計引數的過程受到概率的影響,具有一定的不確定性,訓練資料需要花費更多的時間,得到的模型更高的表現效能和更好的穩定性。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import classification_report
titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
#特徵選擇
X = titanic[['pclass','age','sex']]
y = titanic['survived']
X['age'].fillna(X['age'].mean(), inplace=True)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
vec = DictVectorizer(sparse=False)
X_train = vec.fit_transform(X_train.to_dict(orient='record'))
X_test = vec.transform(X_test.to_dict(orient='record'))
#使用單一決策樹
dtc = DecisionTreeClassifier()
dtc.fit(X_train,y_train)
dtc_y_pred = dtc.predict(X_test)
#使用隨機森林分類器
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
rfc_y_pred = rfc.predict(X_test)
# 使用梯度提升決策樹
gbc = GradientBoostingClassifier()
gbc.fit(X_train, y_train)
gbc_y_pred = gbc.predict(X_test)
print( 'The accuracy of decision tree is', dtc.score(X_test, y_test))
print(classification_report(dtc_y_pred, y_test))
print('The accuracy of random forest classifier is', rfc.score(X_test, y_test))
print(classification_report(rfc_y_pred, y_test))
print('The accuracy of gradient tree boosting is', gbc.score(X_test, y_test))
print(classification_report(gbc_y_pred, y_test))

相關推薦

機器學習——監督學習經典模型特點

監督學習分為分類學習和迴歸學習,分類即從分類別中選擇一個作為結果,其結果是離散的,迴歸待預測的結果是連續的,迴歸於分類的模型大同小異,這裡只介紹分類學習分類學習: 1、線性分類器 受限於資料特徵與分類目標之間的線性假設。LogisticRegression採用精確解析的方

機器學習應用在形態下落地的問題和參考架構

前言 機器學習是人工智慧研究領域的一個重要分支,近十年因為以深度學習為代表的研究方向在影象識別,語音識別,文字翻譯及深度強化學習在圍棋等遊戲應用中的重大突破而又重新興起,變成新的技術浪潮。但是機器學習還沒有達到實現人工智慧的階段,無法像人一樣快速學習新技能,掌握新領域,進行創造性活動。機器學習還僅僅是弱人

機器學習中的距離度量方法比較

1. 歐氏距離(Euclidean  Distance)  /ju:'klidiən/ 歐式距離是最容易直觀理解的距離度量方法,我們小學,中學,高中所接觸的兩個空間中的距離一般都是指的是歐式距離。  二維平面上點a(x1,y1)與b(x2,y2)間的歐氏距離:

Python機器學習庫sklearn迴歸演算法建模及分析(實驗)

最簡單的迴歸模型就是線性迴歸 資料匯入與視覺化分析 from IPython.display import Image %matplotlib inline # Added version che

機器學習-監督學習應用:梯度下降

矩陣 data width 最速下降法 數據 訓練 訓練數據 這樣的 最小 回歸與梯度下降: 回歸在數學上來說是給定一個點集,能夠用一條曲線去擬合之,如果這個曲線是一條直線,那就被稱為線性回歸,如果曲線是一條二次曲線,就被稱為二次回歸,回歸還有很多的變種,如locally

機器學習-監督學習概念

監督學習 Supervised learning     讓我們通過討論幾個監督學習問題開始,假設我們有一個關於俄勒岡州波特蘭市的47座房子的居住面積和價格的一組資料,如下所示: 我們把資料畫成圖,如下:     給出像這樣的資料,

網際網路技術學習29——redis資料型別

Redis一共分5中基本資料型別: String、Hash、List、Set、ZSet String型別 String型別是包含很多種型別的特殊型別,並且是二進位制安全的。比如對序列化的物件進行儲存,比如一張圖片進行二進位制儲存,比如一額簡單的字串數值等等。 設定值 set nam

機器學習-監督學習&&無監督學習

監督學習(supervised learning) 通過已有的訓練樣本(即已知資料以及其對應的輸出)來訓練,從而得到一個最優模型,再利用這個模型將所有新的資料樣本對映為相應的輸出結果,對輸出結果進行簡單的判斷從而實現分類的目的,那麼這個最優模型也就具有了對未知資料進行分類的能力。在社會中,我們在很

圖解機器學習-監督學習-線性迴歸總結

code:1.分析資料需要用什麼函式來擬合,給定已知sin函式的時候好擬合,但是未知函式是幾次,未知具體函式什麼樣子的時候擬合的時候需要自己觀察資料,並選擇相應的模型擬合,我自己編寫了一段code,擬合一下試試演算法的實用性. x=[1,3,5,6,2,4]'; y=[3,4,5,6,7,

機器學習--監督學習之梯度下降法

最近在看stanford 吳恩達老師的機器學習課程,附上網易公開課的地址http://open.163.com/special/opencourse/machinelearning.html 突然心血

機器學習->監督學習->logistic迴歸,softMax迴歸

本篇博文來總結一下回歸模型裡面兩個非常重要的模型。 logistic迴歸 softMAX迴歸 Logistic迴歸 logistics迴歸雖然有“迴歸”兩字但是卻是分類模型,並且是個二分類模型。 logistics迴歸是個線性分類模型,有著線性的

學習筆記:注入方法

//member template class Integer{ public: template <int N> void multiple(); private: int i_; }; template <> void Int

機器學習->監督學習->線性迴歸(LASSO,Ridge,SGD)

本篇博文主要總結線性迴歸,線性迴歸雖然簡單,但是卻是很重要,我將沿著以下幾個主題總結 最小二乘法 使用極大似然估計來解釋最小二乘 的解析式的求解過程 線性迴歸的複雜度懲罰因子(LASSO,Ridge) 梯度下降法 實戰 最小二乘法 線性迴歸,線性是

經典的網路伺服器架構模型的分析與比較

前言 事件驅動為廣大的程式設計師所熟悉,其最為人津津樂道的是在圖形化介面程式設計中的應用;事實上,在網路程式設計中事件驅動也被廣泛使用,並大規模部署在高連線數高吞吐量的伺服器程式中,如 http 伺服器程式、ftp 伺服器程式等。相比於傳統的網路程式設計方式,事件驅動能夠

關於for循環的經典案例

所有 log 數字 style 學習 兩個 方式 運用 得到 由於for循環可以通過控制循環變量的初始值和循環結束條件來改變遍歷的區間,所以在排序或者遍歷的時候,利用for循環就比較簡單,以下是本人學習後得到的一些總結案例。 1.排序的應用 1)交換排序:通過取出的數和該數

資料倉庫中的資料模型

資料倉庫中常見的模型有:正規化建模,雪花模型,星型建模,事實星座模型. 星型模型 星型模型是資料集市維度建模中推薦的建模方法。星型模型是以事實表為中心,所有的維度表直接連線在事實表上,像星星一樣。星型模型的特點是資料組織直觀,執行效率高。因為在資料集市的建設過程中,資料經過了預

經典搜尋演算法以及應用

目錄 二、 窮舉 分支定界: A* 一、 評估你的複雜度 簡單的判斷演算法是否能滿足執行時間限制的要求 密切關注題中的給出的資料規模,選擇相應的演算法 一起試一下這個題目吧! 樣例: 輸入: 3

深入瞭解IO模型(阻塞非阻塞,同步非同步)

一般來說,Linux下系統IO主要就是通過以下幾個函式open(),close(),read(),write(),send(),recv(),lseek(),今天就以recv()為例來介紹下IO模型中的同步非同步,阻塞非阻塞的區別。先說阻塞與非阻塞的區別,recv()函式預設

經典密碼(classic cipher)

凱撒密碼(Caesar Cipher) Alice和Bob通訊,Alice和Bob共享一個移位數字,所有的明文都移動相同的位置。 最早的置換密碼(substitution cipher) 原理:簡

css3之模型

昨晚回去花了點時間,系統的學習了一下盒模型,現總結如下。 1、盒的基本型別: 在css3中使用display屬性來定義盒的型別,總體來說盒分為block型別和inline型別。 我們之前所學的div元