亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器

系統(tǒng) 1845 0

分類(lèi)

? 什么是分類(lèi)
– 分類(lèi)模型: 輸入樣本的屬性值,輸出對(duì)應(yīng)的類(lèi)別,將每個(gè)樣本映射到預(yù)先定義好的類(lèi)別
? 常用分類(lèi)算法

– Knn算法
– 決策樹(shù)
– 貝葉斯分類(lèi)器
– 支持向量機(jī)
– 神經(jīng)網(wǎng)絡(luò)
5種算法!!

分類(lèi):分為娛樂(lè)新聞、民生新聞、
識(shí)別到各個(gè)類(lèi)別之間的差距,對(duì)于新給的一個(gè)新聞,根據(jù)歷史信息預(yù)測(cè)到它的類(lèi)別

有監(jiān)督的學(xué)習(xí):類(lèi)別是已經(jīng)確定的

根據(jù)訓(xùn)練集數(shù)據(jù)模型的創(chuàng)建、模型的使用
類(lèi)別是給定的

距離

? 馬氏距離與歐氏距離
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第1張圖片

最近鄰算法Knn

? 算法主要思想:
1 選取k個(gè)和待分類(lèi)點(diǎn)距離最近的樣本點(diǎn)
2 看1中的樣本點(diǎn)的分類(lèi)情況,投票決定待分類(lèi)點(diǎn)所屬的類(lèi)
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第2張圖片

先看看自己身邊的朋友是怎么樣的。
k=3歸為紅色類(lèi)
k=5歸為藍(lán)色類(lèi)

但是沒(méi)有給出k到底取多少

距離的概念

歐式距離 直線間距離

馬氏距離 點(diǎn)與點(diǎn)的相似度

貝葉斯分類(lèi)器

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第3張圖片
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第4張圖片

貝葉斯公式:條件概率

原理:不知道確切的分類(lèi),但是可以看到表現(xiàn)出來(lái)的屬性

到底 落在分布1的概率高還是落在分布2的概率高

根據(jù) 先決條件 ,判斷樣本是落在哪一類(lèi)的

要求屬性之間相互獨(dú)立

可能會(huì)有一些因果關(guān)系的存在

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第5張圖片

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第6張圖片
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第7張圖片

根據(jù)所表現(xiàn)出來(lái)的,反推出它歸于某一個(gè)類(lèi)的概率

貝葉斯網(wǎng)絡(luò)也適用于多分類(lèi)的情況

決策樹(shù) decision tree

? 什么是決策樹(shù)
? 輸入:學(xué)習(xí)集
? 輸出:分類(lèi)規(guī)則(決策樹(shù))
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第8張圖片

? 樹(shù)中每一個(gè)非葉節(jié)點(diǎn)表示一個(gè)決策,該決策的值導(dǎo)致不同的決策結(jié)果(葉節(jié)點(diǎn))或者影 響后面的決策選擇。
? 根據(jù)給定的未知分類(lèi)的元組X,根據(jù)其屬性值跟蹤一條由根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑,該 葉節(jié)點(diǎn)就是該元組的分類(lèi)結(jié)果預(yù)測(cè)。
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第9張圖片

常見(jiàn)的決策樹(shù)算法有:

? ID3(->C4.5->C5.0)

?CART(Classification And Regression Tree)
這兩類(lèi)算法的主要區(qū)別在于 分裂屬性時(shí)的選擇方法

在構(gòu)建決策樹(shù)時(shí),這兩類(lèi)算法的流程基本一樣,都采用 貪心方法,自頂而下遞歸構(gòu)建決策樹(shù)。

名詞解釋

? 數(shù)據(jù)分區(qū)D
代表了節(jié)點(diǎn)上的數(shù)據(jù)

? 元組屬性列表

? 屬性A
? 結(jié)點(diǎn)N
? 類(lèi)別C

貪心算法構(gòu)建決策樹(shù)

? 1.創(chuàng)建一個(gè)結(jié)點(diǎn)N。
如果D中的元組都在同一個(gè)類(lèi)別C中,則N作為葉結(jié)點(diǎn),以C標(biāo)記;
如果屬性列表為空,則N作為葉節(jié)點(diǎn),以D中最多的類(lèi)別C作為標(biāo)記。

? 2.根據(jù)分裂準(zhǔn)則找出“最好”的分裂屬性A,并用該分裂屬性標(biāo)記N。
1)A是離散的,則 A的每個(gè)已知值都產(chǎn)生一個(gè)分支;
2)A是連續(xù)的,則產(chǎn)生A≤s和A>s兩個(gè)分支;
3)若A是連續(xù)的,并且必須產(chǎn)生二叉樹(shù),則產(chǎn)生A∈A1和A∈A2兩個(gè)分支,其中A1,A2非空且 A1∪A2=A

? 3.若給定的分支中的元組非空,對(duì)于D的每一個(gè)分支Dj,重復(fù)步驟1,2

屬性選擇度量

? 如果我們根據(jù)分裂準(zhǔn)則把D劃分為較小的分區(qū),最好的情況是每個(gè)分區(qū)都是純的,即落 在一個(gè)給定分區(qū)的所有元組都是相同的類(lèi)。最好的分裂準(zhǔn)則就是 令到每個(gè)分區(qū)盡量的純。
? 屬性選擇度量給學(xué)習(xí)集中的每個(gè)屬性提供了評(píng)定。具有最好度量得分的屬性被選為 分裂 屬性

? ID3系列算法:基于熵
? 1948年,香農(nóng)提出了“信息熵”的概念,解決了對(duì)系統(tǒng)信息的量化度量問(wèn)題。
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第10張圖片

ID3——信息增益

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第11張圖片
? 信息增益定義為原來(lái)的信息需求與新的信息需求之間的差,即
? Gain(A)=Info(D)-InfoA(D)
? Gain(A)表示知道A的值而導(dǎo)致的信息需求的期望減少。 ? 選擇具有最大信息增益的屬性作為分裂屬性

連續(xù)值的信息增益

? 對(duì)于連續(xù)值屬性A,要計(jì)算它的信息增益,其實(shí)也等價(jià)于尋找A的“最佳”分裂點(diǎn)。
? 1.將A的值按遞增排序
?2. 每對(duì)相鄰值的中點(diǎn)(v個(gè))是一個(gè)可能的分裂點(diǎn)。將A按照這些分裂點(diǎn)做v-1次劃分,
計(jì)算每次劃分的InfoA(D)
? 3.選擇具有最小期望信息需求的點(diǎn)作為A的分裂點(diǎn),并根據(jù)該分裂點(diǎn)計(jì)算A的信息增益

ID3算法的缺陷

? 信息增益存在著一定的局限性,它會(huì)傾向于選擇具有大量值的屬性,但是有時(shí)候這種屬 性對(duì)分類(lèi)其實(shí)沒(méi)有多大作用。

例如每個(gè)學(xué)生的學(xué)號(hào)對(duì)其成績(jī)高低的分類(lèi)沒(méi)有作用,但是 如果利用信息增益來(lái)選擇分裂屬性,學(xué)號(hào)這一屬性的劃分會(huì)導(dǎo)致大量分區(qū),每一個(gè)分區(qū) 都只有一個(gè)學(xué)生所以每個(gè)分區(qū)都是純的,但是這樣的劃分對(duì)分辨學(xué)生成績(jī)的高低并沒(méi)有 用。

C4.5——增益率

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第12張圖片

CART

與ID3算法的差異:
1.不是基于信息熵,而是基于 不純度 來(lái)評(píng)定屬性
2.嚴(yán)格的二元?jiǎng)澐帧J褂肐D3算法有可能會(huì)產(chǎn)生多叉樹(shù),但是使用CART算法只產(chǎn)生 二叉樹(shù)
3.根據(jù)y值類(lèi)型的不同可分為 回歸樹(shù) 分類(lèi)樹(shù)
連續(xù)變量。回歸樹(shù)
離散變量。分類(lèi)樹(shù)

分類(lèi)樹(shù)和回歸樹(shù)

? 分類(lèi)樹(shù):y值是 類(lèi)別
? 回歸樹(shù):y值是 實(shí)數(shù)
? 異同:1.所用算法思路一致
? 2.評(píng)定分裂標(biāo)準(zhǔn)不一樣

分類(lèi)樹(shù)

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第13張圖片
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第14張圖片
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第15張圖片

回歸樹(shù)

? 將空間中的點(diǎn)劃分成不同的區(qū)域,同一個(gè) 區(qū)域中的點(diǎn)擁有相同的水平
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第16張圖片

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第17張圖片
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第18張圖片

例子

? Hitters數(shù)據(jù)集
? 根據(jù)籃球球員的各種 數(shù)據(jù)來(lái)預(yù)測(cè)籃球員的 薪酬的對(duì)數(shù)值(log salary)
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第19張圖片

樹(shù)的修剪

? 為什么要修剪:避免過(guò)度擬合,簡(jiǎn)化模型
? 兩種修剪方法:先剪枝與后剪枝
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第20張圖片
? 先剪枝:通過(guò)設(shè)定一定的閥值來(lái)停止樹(shù)的生長(zhǎng)
例如,在構(gòu)建樹(shù)模型時(shí),使用信息增益、基尼指數(shù)來(lái)度量劃分的優(yōu)劣。可以 預(yù)先設(shè)定一個(gè)閥值,當(dāng)劃分一個(gè)結(jié)點(diǎn)的元組到時(shí)低于預(yù)設(shè)的閥值時(shí),停止改 子集的劃分
? 后剪枝:等樹(shù)完全生成后再通過(guò)刪除結(jié)點(diǎn)去修剪決策樹(shù)。由于先剪枝中,選擇合適的 閥值存在一定的困難,所以后剪枝更加常用

后剪枝

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第21張圖片

決策樹(shù)的優(yōu)缺點(diǎn)

? 優(yōu)點(diǎn):
?1. 樹(shù)模型十分通俗易懂,解釋起來(lái)簡(jiǎn)單明了
?2. 相對(duì)于其他模型,樹(shù)模型可以通過(guò)圖形模型展示,即使不具備相應(yīng)專業(yè)知識(shí)的人可以一名了然
?3.樹(shù)模型可以直接處理 定性變量 ,不需要增加虛擬變量

? 缺點(diǎn):
? 準(zhǔn)確率不夠高

從線性判別法說(shuō)起

? 用 一條直線 來(lái)劃分學(xué)習(xí)集(這條直線一定存在嗎?)
? 然后根據(jù) 待測(cè)點(diǎn)在直線的哪一邊 決定它的分類(lèi)
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第22張圖片
13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第23張圖片

支持向量機(jī)SVM

? 支持向量機(jī)SVM
– 原創(chuàng)性(非組合)的具有明顯直觀幾何意義的分類(lèi)算法,具有較高的準(zhǔn)確率
– 思想直觀,但細(xì)節(jié)異常復(fù)雜,內(nèi)容涉及 凸分析算法,核函數(shù),神經(jīng)網(wǎng)絡(luò) 等高深的領(lǐng)域,幾乎可以寫(xiě)成單獨(dú)的大部頭與著。大部分非與業(yè)人士會(huì)覺(jué)得難以理解。
? 兩種情況
– 簡(jiǎn)單情況:線性可分,把問(wèn)題轉(zhuǎn)化為一個(gè)凸優(yōu)化問(wèn)題,可以用 拉格朗日乘子法 簡(jiǎn)化,然后用既有的算法解決
– 復(fù)雜情況:線性不可分,用映射函數(shù) 將樣本投射到高維空間 ,使其變成線性可分的情形。利用 核函數(shù) 來(lái)減少高維 度計(jì)算量

? 最優(yōu)分隔平面

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第24張圖片

最大邊緣超平面(MMH)

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第25張圖片

非線性情況

13python數(shù)據(jù)分析分類(lèi)算法– Knn算法 – 決策樹(shù) – 貝葉斯分類(lèi)器 – 支持向量機(jī) – 神經(jīng)網(wǎng)絡(luò)_第26張圖片

代碼

            
              # -*- coding: utf-8 -*-
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import precision_recall_curve
from sklearn.metrics import classification_report
from sklearn.naive_bayes import BernoulliNB
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cross_validation import train_test_split
import matplotlib.pyplot as plt
import pandas as pd

####knn最鄰近算法####
inputfile = 'd:/data/sales_data.xls'
data = pd.read_excel(inputfile, index_col = u'序號(hào)') #導(dǎo)入數(shù)據(jù)

#數(shù)據(jù)是類(lèi)別標(biāo)簽,要將它轉(zhuǎn)換為數(shù)據(jù)
#用1來(lái)表示“好”、“是”、“高”這三個(gè)屬性,用-1來(lái)表示“壞”、“否”、“低”
data[data == u'好'] = 1
data[data == u'是'] = 1
data[data == u'高'] = 1
data[data != 1] = -1
x = data.iloc[:,:3].as_matrix().astype(int)
y = data.iloc[:,3].as_matrix().astype(int)


#拆分訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù) 
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2)


#訓(xùn)練KNN分類(lèi)器 
clf = KNeighborsClassifier(algorithm='kd_tree')
clf.fit(x_train, y_train)

#測(cè)試結(jié)果
answer = clf.predict(x_test)
print(x_test)
print(answer)
print(y_test)
print(np.mean( answer == y_test))

#準(zhǔn)確率
precision, recall, thresholds = precision_recall_curve(y_train, clf.predict(x_train))
print(classification_report(y_test, answer, target_names = ['高', '低']))


####貝葉斯分類(lèi)器####
#訓(xùn)練貝葉斯分類(lèi)器
clf = BernoulliNB() 
clf.fit(x_train,y_train)


#測(cè)試結(jié)果
answer = clf.predict(x_test)
print(x_test)
print(answer)
print(y_test)
print(np.mean( answer == y_test))
print(classification_report(y_test, answer, target_names = ['低', '高']))


####決策樹(shù)####
from sklearn.tree import DecisionTreeClassifier as DTC
dtc = DTC(criterion='entropy') #建立決策樹(shù)模型,基于信息熵
dtc.fit(x_train, y_train) #訓(xùn)練模型

#導(dǎo)入相關(guān)函數(shù),可視化決策樹(shù)。
#導(dǎo)出的結(jié)果是一個(gè)dot文件,需要安裝Graphviz才能將它轉(zhuǎn)換為pdf或png等格式。
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
with open("tree.dot", 'w') as f:
  f = export_graphviz(dtc, out_file = f)


#測(cè)試結(jié)果
answer = dtc.predict(x_test)
print(x_test)
print(answer)
print(y_test)
print(np.mean( answer == y_test))
print(classification_report(y_test, answer, target_names = ['低', '高']))


####SVM####
from sklearn.svm import SVC
clf =SVC()
clf.fit(x_train, y_train)  

#測(cè)試結(jié)果
answer = clf.predict(x_test)
print(x_test)
print(answer)
print(y_test)
print(np.mean( answer == y_test))
print(classification_report(y_test, answer, target_names = ['低', '高']))

            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 免费一级大毛片a一观看不卡 | 国产 麻豆 欧美亚洲综合久久 | 国产精品免费视频一区 | 午夜噜噜噜私人影院在线播放 | 天天狠操| 国产乱肥老妇精品视频 | 久久精品成人一区二区三区 | 亚洲免费视频播放 | 亚洲一区视频在线播放 | 99re热这里只有精品视频 | 香蕉免费一区二区三区在线观看 | 性做久久久久久久久25的美女 | 日韩一及片| 成人影院在线免费观看 | 牛牛影院成人网 | 成人一级视频 | 欧美激情观看一区二区久久 | 国产ar高清视频+视频 | 国产成人精品免费视频网页大全 | 久久精品国产福利 | 国产精品久久久久久久成人午夜 | 成人免费毛片观看 | 久久精品国产精品青草图片 | 亚洲精品天堂 | 午夜欧美日韩 | 四虎影视www四虎免费 | 99热这 | 国产牛牛 | 五月天丁香婷婷综合 | a毛片在线| 男女一级特黄a大片 | 综综综综合网 | 欧美午夜大片 | 涩涩视频观看 | 深夜精品影院18以下勿进 | 精品欧美一区二区三区免费观看 | chinese在线播放91国内 | 三级黄毛片 | 在线观看 中文字幕 | 九九51精品国产免费看 | 99久久香蕉国产线看观香 |