《R語(yǔ)言數(shù)據(jù)分析與挖掘》課件第2章-第5章_第1頁(yè)
《R語(yǔ)言數(shù)據(jù)分析與挖掘》課件第2章-第5章_第2頁(yè)
《R語(yǔ)言數(shù)據(jù)分析與挖掘》課件第2章-第5章_第3頁(yè)
《R語(yǔ)言數(shù)據(jù)分析與挖掘》課件第2章-第5章_第4頁(yè)
《R語(yǔ)言數(shù)據(jù)分析與挖掘》課件第2章-第5章_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

回歸分析簡(jiǎn)單線性回歸

簡(jiǎn)單線性回歸>eruption.lm<-lm(eruptions~waiting,data=faithful)>coeffs<-coefficients(eruption.lm)>coeffs#一元線性回歸的參數(shù):截距、斜率(Intercept)waiting-1.874015990.07562795>plot(eruptions~waiting,faithful,#繪圖變量 col="blue",#繪圖參數(shù) main="老忠實(shí)線性回歸結(jié)果",#標(biāo)題 xlab="等待時(shí)間",#x軸標(biāo)簽 ylab="持續(xù)噴發(fā)時(shí)間") #y軸標(biāo)簽>fit<-lm(eruptions~waiting,data=faithful)>abline(fit,col="red")#畫(huà)出回歸模型lm參數(shù):因變量eruptions,自變量waiting,數(shù)據(jù)集faithful。使用coefficients()來(lái)顯示所得到的回歸方程中的系數(shù)。簡(jiǎn)單線性回歸>waiting<-80#等待時(shí)間>duration<-coeffs[1]+coeffs[2]*waiting>duration(Intercept)4.1762>newdata<-data.frame(waiting=c(80,50))#封裝參數(shù)>predict(eruption.lm,newdata) 124.1762201.907381使用模型進(jìn)行預(yù)測(cè)。簡(jiǎn)單線性回歸

簡(jiǎn)單線性回歸

簡(jiǎn)單線性回歸

簡(jiǎn)單線性回歸qq圖可用于直觀驗(yàn)證一組數(shù)據(jù)是否來(lái)自于某個(gè)給定的分布,或者驗(yàn)證兩組數(shù)據(jù)是否來(lái)自同一分布。根據(jù)所討論的分布計(jì)算出每個(gè)數(shù)據(jù)點(diǎn)的理論預(yù)期值,如果數(shù)據(jù)確實(shí)遵循假定的分布,那么在qq圖上的點(diǎn)將大致散落在一條直線上。正態(tài)概率圖就是一種把數(shù)據(jù)集與正態(tài)分布進(jìn)行比較的圖形化工具。例如,可以比較線性回歸模型的標(biāo)準(zhǔn)化殘差來(lái)檢驗(yàn)殘差是否真正地符合正態(tài)分布規(guī)律。>qqnorm(eruption.stdres,ylab="標(biāo)準(zhǔn)化殘差",xlab="正態(tài)得分",main="老忠實(shí)噴發(fā)持續(xù)時(shí)間")>qqline(eruption.stdres)

多元線性回歸

指標(biāo)名說(shuō)明crim按鎮(zhèn)分布的人均犯罪率zn居住區(qū)域地塊超過(guò)25,000平方英尺的比例indus每個(gè)鎮(zhèn)中非零售商業(yè)用地的比例chas與查爾斯河有關(guān)的啞數(shù)據(jù)(1表示河流范圍,0為其他)nox一氧化氮濃度(partsper10million)rm每戶平均房間數(shù)age1940年前修建的戶主居住的單位數(shù)dis到5個(gè)波士頓就業(yè)中心的加權(quán)距離rad到達(dá)放射狀高速公路方便程度的指數(shù)tax每萬(wàn)美元的全額房產(chǎn)稅率ptratio每個(gè)鎮(zhèn)的小學(xué)生師比

b1000(B-0.63)^2其中B是每個(gè)鎮(zhèn)的黑人比例lstat低收入人口比例medv一千美元為單位的戶主居住房屋的價(jià)格中位值多元線性回歸把medv當(dāng)作因變量,而把其余的指標(biāo)作為自變量,可以建立起一個(gè)多元線性回歸模型如下:使用lm()函數(shù)計(jì)算得出模型并保存在變量Boston.lm中>Boston.lm<-lm(medv~.,data=BostonHousing)多元線性回歸的判定系數(shù)>summary(Boston.lm)$r.squared[1]0.7406427

多元線性回歸

邏輯回歸

邏輯回歸封裝測(cè)試數(shù)據(jù)到數(shù)據(jù)框newdata:>newdata<-data.frame(hp=120,wt=2.8)調(diào)用函數(shù)predict()來(lái)執(zhí)行對(duì)廣義線性模型am.glm和newdata等參數(shù)的預(yù)測(cè)。在選擇預(yù)測(cè)類型時(shí),則需要設(shè)置選項(xiàng)type="response"以得到預(yù)測(cè)概率>

predict(am.glm,

newdata,

type="response")

1

0.64181為了評(píng)價(jià)邏輯回歸的分類效果,可以在mtcars數(shù)據(jù)集上生成混淆矩陣predict<-predict(am.glm,type='response')>table(predict>0.5,mtcars$am)

01FALSE181TRUE112邏輯回歸用戶也可以選擇數(shù)據(jù)集中的一部分用于模型的選擇,而把剩余的數(shù)據(jù)作為測(cè)試對(duì)象,檢查邏輯回歸模型的推廣能力。例如,選擇mtcars的前22條數(shù)據(jù)作為訓(xùn)練使用,而用后10條數(shù)據(jù)來(lái)測(cè)試。>train<-mtcars[1:22,]>test<-mtcars[23:32,]>am.glm<-glm(formula=am~hp+wt,data=train,family=binomial(link='logit'), control=list(maxit=100))>predict<-predict(am.glm,data.frame(test),type='response')>table(predict>0.5,test$am)

01FALSE33TRUE04THANKS聚類分析8.1特征空間與距離“方以類聚,物以群分”。機(jī)器學(xué)習(xí)與基于規(guī)則的推理不同,是一個(gè)以數(shù)據(jù)為基礎(chǔ)的歸納學(xué)習(xí)模式和規(guī)律的過(guò)程。分類和聚類是兩種典型的機(jī)器學(xué)習(xí)應(yīng)用。在分類時(shí),已知類別的個(gè)數(shù),每一個(gè)類別分配了一個(gè)唯一的標(biāo)簽,分類就是根據(jù)帶標(biāo)簽的樣本學(xué)習(xí)得到一個(gè)分類器,再對(duì)一個(gè)不帶標(biāo)簽的測(cè)試對(duì)象按照應(yīng)屬類別為它加上標(biāo)簽的過(guò)程。與分類不同,聚類的樣本數(shù)據(jù)不帶有標(biāo)簽,根據(jù)樣本之間的相似程度來(lái)將樣本分為幾個(gè)類別(或者叫簇),并且期望在每個(gè)類別的內(nèi)部,樣本之間的相似程度盡可能大,而不同在類別之間,樣本的相似程度盡可能小。樣本可以表示成樣本空間中的點(diǎn),二距離代表了點(diǎn)之間的(不)相似程度。聚類與分類距離的含義:鳶尾花數(shù)據(jù)集>

data(iris)>

str(iris)'data.frame':

150

obs.

of

5

variables:

$

Sepal.Length:

num

5.1

4.9

4.7

4.6

5

5.4

4.6

5

4.4

4.9

...

$

Sepal.Width

:

num

3.5

3

3.2

3.1

3.6

3.9

3.4

3.4

2.9

3.1

...

$

Petal.Length:

num

1.4

1.4

1.3

1.5

1.4

1.7

1.4

1.5

1.4

1.5

...

$

Petal.Width

:

num

0.2

0.2

0.2

0.2

0.2

0.4

0.3

0.2

0.2

0.1

...

$

Species

:

Factor

w/

3

levels

"setosa","versicolor",..:

1

1

1

1

1

1

1

1

1

1

...R內(nèi)置iris數(shù)據(jù)集共150個(gè)樣本,特征向量為x=(花萼長(zhǎng)度,花萼寬度,花瓣長(zhǎng)度,花瓣寬度)。類別標(biāo)簽為花的品種,分別是setosa、versicolor和virginica三種。ggplot畫(huà)圖>

library

(ggplot2)

#加載包含ggplot

()的包>

ggplot

(data

=

iris)

+

geom_point(aes(x

=

Petal.Length,

y

=

Petal.Width,

color

=

Species

,

shape

=

Species

),

position

=

"jitter")150個(gè)樣本中,每個(gè)類別各有50個(gè)樣本,用不同的顏色表示。可以看出,不同類別的樣本距離較遠(yuǎn),同一類別的樣本彼此接近。選擇合適的特征與距離度量>

ggplot

(data

=

iris

)

+

geom_point

(aes(x

=

Sepal.Length,

y

=

Sepal.Width,color

=

Species

,

shape

=

Species

),

position

=

"jitter")再以花萼的長(zhǎng)度(Sepal.Length)和寬度(Sepal.Width)為特征來(lái)繪制散點(diǎn)圖。在setosa與另外兩個(gè)品種之間依然存在有明顯的分界,versicolor與virginica之間不僅沒(méi)有明顯的分界線,而且混雜在一起難以區(qū)別。樣本之間的距離距離的定義要滿足下列三個(gè)條件:非負(fù)、對(duì)稱和三角不等式。閔可夫斯基距離:假設(shè)n維實(shí)特征空間中樣本,距離當(dāng)p=1時(shí),稱為曼哈頓距離。當(dāng)p=2時(shí),稱為歐幾里得距離。R語(yǔ)言提供了函數(shù)dist()

計(jì)算數(shù)據(jù)集中樣本點(diǎn)與點(diǎn)的距離。歸一化處理>

x

<-

iris[,

-5]

#只使用數(shù)值屬性>

x

<-

scale(x)

#標(biāo)準(zhǔn)化>

dist.iris

<-

dist

(x,

method

=

"euclidean")

#計(jì)算距離矩陣>

dmat

<-

as.matrix

(dist.iris)

#調(diào)整為矩陣格式>

round

(dmat[1:5,1:5],

2)

#保留兩位小數(shù)

1

2

3

4

51

0.00

1.17

0.84

1.10

0.26有時(shí)不同維度上的特征具有不同的量綱,即使量綱相同,取值范圍也可能由很大的差異。歸一化處理:把取值變?yōu)?到1之間的數(shù)值。樣本集合之間的距離樣本子集之間的距離存在不同的類別之間的距離定義方法。注意:對(duì)于類別之間距離的不同定義,會(huì)產(chǎn)生不同的聚類效果。下面列出了幾種最常見(jiàn)的類之間距離定義。

單聯(lián)動(dòng):一個(gè)類中的所有樣本點(diǎn)與另一個(gè)類中的所有樣本點(diǎn)的距離的最小值。

全聯(lián)動(dòng):一個(gè)類中的所有樣本點(diǎn)與另一個(gè)類中的所有樣本點(diǎn)的距離的最大值。

平均聯(lián)動(dòng):一個(gè)類中的所有樣本點(diǎn)與另一個(gè)類中的所有樣本點(diǎn)的距離的平均值。

質(zhì)心法:一個(gè)類中的質(zhì)心到另一個(gè)類的質(zhì)心的距離。

Ward法:兩個(gè)類之間的離差平方和。knn分類距離表示了數(shù)據(jù)樣本在特征空間的接近程度,相似的樣本具有相同的類別??梢愿鶕?jù)距離度量來(lái)尋找在空間中與未知樣本最為接近的帶有類別標(biāo)簽的樣本,用它們給新數(shù)據(jù)分類。

在R語(yǔ)言的class包中提供了knn()函數(shù),用已知數(shù)據(jù)中的k個(gè)近鄰對(duì)測(cè)試數(shù)據(jù)分類,給沒(méi)有標(biāo)記類別的數(shù)據(jù)加上類別標(biāo)簽。函數(shù)knn()的調(diào)用形式如下:knn

(train,

test,

cl,

k

=

1,

l

=

0,

prob

=

FALSE,

use.all

=

TRUE)參

數(shù)說(shuō)

明train訓(xùn)練集案例的矩陣或數(shù)據(jù)框test測(cè)試集案例的矩陣或數(shù)據(jù)框cl訓(xùn)練集實(shí)際分類的因子型數(shù)據(jù)k考慮的近鄰數(shù)量l確定的決策所需的最少得票prob如果設(shè)為TRUE,則會(huì)把贏得類別時(shí)得到的投票比例返回給屬性probuse.all控制如何處理平局(多個(gè)近鄰距離相等)的方法。如果設(shè)為TRUE,則考慮所有距離等于第k大的近鄰,否則只隨機(jī)選擇一個(gè)距離第k大的近鄰以只考慮k個(gè)近鄰knn舉例:鳶尾花library

(class) #用50%樣本組成訓(xùn)練集train

<-

rbind

(iris3[1:25,,1],

iris3[1:25,,2],

iris3[1:25,,3])test

<-

rbind

(iris3[26:50,,1],

iris3[26:50,,2],

iris3[26:50,,3])cl

<-

factor

(c

(rep("setosa",25),

rep("versicolor",25),

rep("virginica",25))) #cl用作分類標(biāo)簽#對(duì)測(cè)試集調(diào)用knn()函數(shù)iris.knn

<-

knn

(train,

test,

cl,

k

=

3,

prob=TRUE)把鳶尾花數(shù)據(jù)集一分為二,一半用于訓(xùn)練,一半用于測(cè)試。選擇參數(shù)k=3,調(diào)用knn()?;煜仃?gt;

target

<-

factor

(c

(rep("setosa",25),

rep("versicolor",25),rep("virginica",25)))

#目標(biāo)分類標(biāo)簽>

#預(yù)測(cè)分類結(jié)果與目標(biāo)類別比較:行為預(yù)測(cè)值,列為實(shí)際值,對(duì)角線上的是分類正確的結(jié)果>

table

(iris.knn,

target)

#混淆矩陣

targetiris.knn

setosa

versicolor

virginica

setosa

25

0

0

versicolor

0

23

3

virginica

0

2

22對(duì)角線上的元素代表了分類正確的結(jié)果。行中除了對(duì)角線元素之外如果還有非0值,表示了誤報(bào)。列中除了對(duì)角線元素之外如果還有非0值,表示了漏報(bào)??梢杂没煜仃噥?lái)評(píng)價(jià)分類器的性能。8.2聚類算法人工神經(jīng)網(wǎng)絡(luò)一般都使用有監(jiān)督的學(xué)習(xí)。在神經(jīng)網(wǎng)絡(luò)中,通過(guò)學(xué)習(xí)來(lái)調(diào)整每個(gè)神經(jīng)元節(jié)點(diǎn)對(duì)輸入信號(hào)與偏移量加權(quán)時(shí)使用的權(quán)值。類似于其他有監(jiān)督學(xué)習(xí)的方法,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)就是通過(guò)參數(shù)的選擇使模型成為一個(gè)可以正確地把輸入數(shù)據(jù)轉(zhuǎn)化為預(yù)期輸出結(jié)果的映射??梢詰?yīng)用多層感知器模型,應(yīng)用神經(jīng)網(wǎng)絡(luò)解決非線性回歸與分類等有監(jiān)督學(xué)習(xí)中的問(wèn)題kmeans聚類k均值算法包括下列具體步驟:在樣本數(shù)據(jù)集中任選k個(gè)樣本點(diǎn)作為初始的簇心;掃描每個(gè)樣本點(diǎn),求該樣本點(diǎn)到各個(gè)簇心之間的距離,選擇其中最短距離的簇心,并將樣本點(diǎn)歸為該簇心表示的類。別對(duì)每個(gè)類中的所有樣本點(diǎn)求均值,作為新的簇心。重復(fù)步驟(2)和(3),直到達(dá)到最大迭代次數(shù),或者更新后的簇心與原來(lái)的簇心幾乎吻合(形成不動(dòng)點(diǎn))。kmeans()函數(shù)的主要參數(shù)參

數(shù)說(shuō)

明x數(shù)據(jù)的數(shù)值矩陣,或者能被轉(zhuǎn)化成矩陣的對(duì)象(例如,數(shù)值向量或只包含數(shù)值列的數(shù)據(jù)框)centers目標(biāo)的簇的數(shù)量k,或是一組各不相同的初始簇心。如果是k,會(huì)隨機(jī)選擇幾組x中的行作為初始簇心iter.max算法指定的最大迭代次數(shù)nstart當(dāng)centers是一個(gè)數(shù)字時(shí),表示需要選擇多少組隨機(jī)簇心kmeans對(duì)象kmeans()函數(shù)通過(guò)迭代將數(shù)據(jù)點(diǎn)劃分為k簇,使得每一個(gè)點(diǎn)到所屬的簇心的距離之和最小。結(jié)果就是k個(gè)簇心都等于該簇中所有點(diǎn)的均值。函數(shù)調(diào)用的形式如下:kmeans(x,centers,iter.max=10,nstart=1)kmeans

()函數(shù)返回“kmeans”類中的一個(gè)對(duì)象,對(duì)象屬性可以直接訪問(wèn)。參數(shù)說(shuō)明cluster整數(shù)向量取值從1~k,表明每一點(diǎn)被劃分到哪一個(gè)簇centers簇心矩陣totss距離的總平方和withinss對(duì)應(yīng)每一個(gè)簇的簇內(nèi)距離平方和向量

size每一個(gè)簇包含的點(diǎn)的個(gè)數(shù)iter迭代次數(shù)

kmeans()函數(shù)返回值舉例:鳶尾花聚類>

x

<-

iris[,-5]

#用四種幾何尺寸作為特征向量>

y

<-

iris$Species

#類別為Species屬性>

kc

<-

kmeans

(x,3)

#使用特征向量聚成三類>

table

(y,kc$cluster)

#列出混淆矩陣y

1

2

3

setosa

0

50

0

versicolor

48

0

2

virginica

14

0

36>

kc$centers

#查看簇心

>

kc$size

#查看各簇的大小[1]

62

50

38

Sepal.Length

Sepal.Width

Petal.Length

Petal.Width1

5.901613

2.748387

4.393548

1.4338712

5.006000

3.428000

1.462000

0.2460003

6.850000

3.073684

5.742105

2.071053層次聚類層次結(jié)構(gòu)普遍存在于自然界和人們的社會(huì)生活中,例如動(dòng)物的分類方法、文件的樹(shù)狀結(jié)構(gòu)。層次聚類是一種自底向上的逐步聚類方法。在k均值聚類中,用戶必須預(yù)先知道要把樣本聚成多少個(gè)簇。有些時(shí)候,用戶難以準(zhǔn)確地預(yù)判到底存在多少類。層次聚類采用自底向上的方式構(gòu)建了一個(gè)聚類層次結(jié)構(gòu),而無(wú)需提前指定聚類的個(gè)數(shù)。層次聚類的步驟層次聚類算法的具體步驟如下:假設(shè)樣本總數(shù)為N,在初始時(shí),所有樣本點(diǎn)都自成一類,一共有N類;選擇距離最小的兩個(gè)類合并,于是減少一類,剩下N

1類;重復(fù)步驟2,直到所有數(shù)據(jù)點(diǎn)都屬于同一類。R語(yǔ)言通過(guò)函數(shù)hclust()實(shí)現(xiàn)層次聚類。hclust()需要將數(shù)據(jù)用距離矩陣表示出來(lái),所以還需用到dist()函數(shù)。在默認(rèn)情況下,類之間使用全聯(lián)動(dòng)方法度量距離。層次聚類舉例clusters<-hclust(dist(iris[,3:4]))plot(clusters)以iris為例。選擇對(duì)versicolor和virginica區(qū)分度更高的Petal.Length和Petal.Width兩種花瓣屬性來(lái)計(jì)算距離。確定分類數(shù)量>

clusterCut

<-

cutree(clusters,

3)>

table(clusterCut,

iris$Species)

clusterCut

setosa

versicolor

virginica

1

50

0

0

2

0

21

50

3

0

29

0從圖中得出結(jié)論,最好把數(shù)據(jù)劃分成三類或四類??梢允褂煤瘮?shù)cutree()把系統(tǒng)樹(shù)劃分成理想數(shù)量的類。不妨選擇分成三類,用混淆矩陣對(duì)聚類結(jié)果與真實(shí)的品種進(jìn)行比較。改進(jìn)分類結(jié)果>clusters<-hclust(dist(iris[,3:4]),method='average’)>plot(clusters)>

clusterCut

<-

cutree(clusters,

3)>

table(clusterCut,

iris$Species)

clusterCut

setosa

versicolor

virginica

1

50

0

0

2

0

45

1

3

0

5

49用平均聯(lián)動(dòng)替代全聯(lián)動(dòng)計(jì)算距離。分類效果明顯改善。查看錯(cuò)分樣本調(diào)用ggplot

()按照品種和分類結(jié)果標(biāo)色??梢钥闯鲥e(cuò)分的樣本點(diǎn)都位于邊界。ggplot(data

=

iris,

aes(x

=

Petal.Length,

y

=

Petal.Width,color

=

Species),

position

=

"jitter")

+

geom_point(alpha

=

0.4,

size

=

3.5)

+

geom_point(col

=

clusterCut)

+

scale_color_manual(values

=

c('black',

'red',

'green'))密度聚類基于密度的聚類(DBSCAN)是一種對(duì)數(shù)據(jù)點(diǎn)集進(jìn)行劃分的聚類方式,可以從帶噪聲和離群點(diǎn)的數(shù)據(jù)中找到不同形狀和大小的簇。DBSCAN的基本思想非常直觀:給定位于同一空間的一組數(shù)據(jù)點(diǎn),如果一些分布稠密的點(diǎn)緊密地依靠在一起,則應(yīng)被歸為一類,而處在低密度區(qū)域的點(diǎn)就應(yīng)該被看作離群點(diǎn)。也就是說(shuō),在點(diǎn)集的不同子集中計(jì)算出的密度是決定聚類的依據(jù),因此,近鄰多的點(diǎn)與距離其他鄰居遠(yuǎn)的點(diǎn)顯然要分別對(duì)待。密度聚類中的概念核心點(diǎn):如果一點(diǎn)被稱為核心點(diǎn),則至少在其給定半徑的鄰域中包含了指定數(shù)量的點(diǎn)。直達(dá)點(diǎn):如果某一點(diǎn)是一個(gè)核心點(diǎn),另一點(diǎn)在該點(diǎn)給定半徑的的鄰域中,則稱為該點(diǎn)的直達(dá)點(diǎn)??蛇_(dá)點(diǎn):如果存在一條路徑從某一點(diǎn)連接到一個(gè)給定點(diǎn),則稱該點(diǎn)維給定點(diǎn)的可達(dá)點(diǎn);除該點(diǎn)外,路徑上的其他點(diǎn)均須為核心點(diǎn)。注意,可達(dá)關(guān)系并不一定對(duì)稱,無(wú)論距離遠(yuǎn)近,沒(méi)有點(diǎn)可以從非核心點(diǎn)可達(dá)。不能從其他點(diǎn)可達(dá)的點(diǎn)都屬于離群點(diǎn)。密度連通性:如果兩個(gè)點(diǎn)均可從另一點(diǎn)可達(dá),則稱這兩點(diǎn)密度連通。DBSCAN的步驟DBSCAN算法可以簡(jiǎn)化成下列幾步:找到每一個(gè)點(diǎn)的鄰域,如果鄰域中有超過(guò)給定數(shù)量的點(diǎn),該點(diǎn)即被識(shí)別為核心點(diǎn)。找到核心點(diǎn)的連通部分,而忽略掉非核心點(diǎn);如果非核心點(diǎn)是附近一個(gè)簇的鄰居,將其分配給附近的簇,否則劃分為噪聲點(diǎn)。密度聚類舉例install.packages

("fpc")library

(fpc)library

(mlbench)pts

<-

mlbench::mlbench.cassini

(n

=

600,

relsize

=

c(3,2,1))plot

(pts)先用mlbench包來(lái)生成仿真數(shù)據(jù)。再用R語(yǔ)言里面的fpc包來(lái)實(shí)現(xiàn)密度聚類算法。應(yīng)用:密度聚類mlbench.cassini()函數(shù)產(chǎn)生了三個(gè)類別的樣本點(diǎn)。其中兩個(gè)邊緣的類分布成香蕉形狀,中間一類分布為圓形。函數(shù)的第一個(gè)參數(shù)n表示總的樣本點(diǎn)數(shù),第二個(gè)參數(shù)為一個(gè)向量,反映各個(gè)類別樣本點(diǎn)的相對(duì)比例。dbscan函數(shù)>

cluster.density

<-

dbscan

(data

=

pts$x,

eps

=

0.2,

MinPts

=

5,

method

=

"hybrid")>

cluster.densitydbscanPts=600MinPts=5eps=0.2

0123border34174seed029618195total330019899>

plot.dbscan(cluster.density,pts$x)取鄰域半徑為0.2,最小樣本點(diǎn)MinPts為5,進(jìn)行密度聚類.參數(shù)method="hybrid"表示提供的數(shù)據(jù)為原始數(shù)據(jù),并計(jì)算原始數(shù)據(jù)的部分距離矩陣。border表示非核心點(diǎn),seed為核心點(diǎn)聚類效果聚類結(jié)果表明,總共被聚為四類對(duì)應(yīng)圖中四種顏色的三角形。圖中圓圈表示非核心點(diǎn),用三角形表示核心點(diǎn)。改變參數(shù)>

cluster.density

<-

dbscan(data

=

pts$x,

eps

=

0.22,

MinPts

=

5,

method

=

"hybrid")>

cluster.densitydbscanPts=600MinPts=5eps=0.22123border0102seed30019098total300200100

密度聚類中,鄰域半徑和最小樣本點(diǎn)數(shù)決定了最終的聚類效果。如果改變鄰域半徑,就能產(chǎn)生不同的聚類結(jié)果。略微擴(kuò)大半徑,對(duì)比前面的結(jié)果,可以看到border點(diǎn)明顯減少。8.3分類算法分類和回歸同屬于有監(jiān)督的學(xué)習(xí),因?yàn)閷?duì)樣本而言,在學(xué)習(xí)的時(shí)候已經(jīng)獲知它們對(duì)應(yīng)的因變量。分類應(yīng)用與回歸應(yīng)用的區(qū)別在于,它們的因變量類型分別是類別的標(biāo)簽和數(shù)值。很多分類模型同樣適用于回歸問(wèn)題。分類算法-決策樹(shù)決策樹(shù)決策樹(shù)是一類有監(jiān)督的學(xué)習(xí)算法,可以視為同一組if/then規(guī)則的集合,但是從結(jié)構(gòu)上看決策樹(shù)又是一種樹(shù)狀模型。如果針對(duì)的是分類問(wèn)題,一棵決策樹(shù)中的每一片樹(shù)葉都代表一個(gè)類別的標(biāo)簽,而每一個(gè)非樹(shù)葉節(jié)點(diǎn)則表示一個(gè)條件測(cè)試,每一個(gè)分支表明了條件測(cè)試執(zhí)行的結(jié)果。訓(xùn)練好決策樹(shù)后,就可以用做分類預(yù)測(cè):從樹(shù)根開(kāi)始,根據(jù)數(shù)據(jù)樣本是否滿足當(dāng)前條件,來(lái)選擇應(yīng)該繼續(xù)訪問(wèn)哪一個(gè)子節(jié)點(diǎn),這樣就可以一步一步地到達(dá)樹(shù)葉,從而判斷樣本的類別。從樹(shù)根到樹(shù)葉的一條路徑就反映出對(duì)樣本分類的過(guò)程。與其他機(jī)器學(xué)習(xí)方法相比較,決策樹(shù)易于理解,也不需要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的預(yù)處理,既不需要標(biāo)準(zhǔn)化,也無(wú)須特別關(guān)注NA數(shù)據(jù)。生成決策樹(shù)的步驟得到一棵全局最優(yōu)的決策樹(shù)是NP難的問(wèn)題,現(xiàn)實(shí)中依賴各種貪婪算法求解決策樹(shù)的訓(xùn)練問(wèn)題。CART是分類與回歸樹(shù)的簡(jiǎn)稱(ClassificationandRegressionTrees),該算法生成的決策樹(shù)既可用于分類,也可用于回歸。構(gòu)建CART決策樹(shù)的基本步驟可以概括成以下幾點(diǎn):對(duì)于給定的訓(xùn)練數(shù)據(jù)子集,尋找預(yù)測(cè)標(biāo)簽的最佳特征;劃分上述特征以獲得最好的分類結(jié)果,劃分出兩個(gè)新的數(shù)據(jù)子集;重復(fù)步驟1和2,直到滿足停止條件。rpart包rpart包實(shí)現(xiàn)了可用于分類或回歸的決策樹(shù)。rpart()函數(shù)的使用方法相對(duì)簡(jiǎn)單,其調(diào)用形式為:rpart(formula,data,weights,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)參

數(shù)說(shuō)

明formula表示因變量與自變量關(guān)系的響應(yīng)公式,如y~x1+x2表示y依賴于x1和x2data可選項(xiàng),用于解釋公式中的變量名,通常是包含formula中變量的數(shù)據(jù)框weights可選項(xiàng),案例權(quán)重subset可選表達(dá)式,表示哪些數(shù)據(jù)行構(gòu)成的子集可以用于擬合

na.action處理缺失項(xiàng)的方法,默認(rèn)情況下刪去沒(méi)有因變量的樣本,但是保留缺少部分自變量的樣本method可選項(xiàng)包括“anova”“poisson”“class”或“exp”。如果未提供該參數(shù),程序會(huì)根據(jù)因變量的數(shù)據(jù)類型自行猜測(cè)。如果因變量是因子型,默認(rèn)method="class";如果是數(shù)值型,假定method="anova";如果是生存對(duì)象,假定method="exp";如果包含兩列,假定method="poisson"。建議調(diào)用時(shí)明確指定所需方法決策樹(shù)聚類:鳶尾花分類install.packages

("rpart")

#安裝包library

(rpart)

#載入包#因變量為Species,公式中的.表示自變量為其余屬性,#method="class"表明是分類樹(shù)fit

<-

rpart

(Species

~

.,

method="class",

iris)選擇用與聚類時(shí)同樣的長(zhǎng)寬尺寸特征來(lái)完成分類。很多深度學(xué)習(xí)包都會(huì)帶有支持GPU多線程運(yùn)算的版本,需要更復(fù)雜的安裝過(guò)程。rpart()函數(shù)產(chǎn)生的分類樹(shù)十分簡(jiǎn)單,只有兩個(gè)條件節(jié)點(diǎn)和三片樹(shù)葉。決策樹(shù)畫(huà)圖函數(shù)使用泛型函數(shù)plot()畫(huà)出來(lái)的決策樹(shù)過(guò)于簡(jiǎn)單,而且非常不美觀。可以使用rpart.plot包中的rpart.plot()畫(huà)圖。安裝好rpart.plot包后,執(zhí)行下列語(yǔ)句:>

library

(rpart.plot)>

rpart.plot

(fit)貝葉斯定理對(duì)于兩個(gè)隨機(jī)事件,概率分別為P(A)和P(B)。條件概率分別是P(A|B)和P(B|A),聯(lián)合概率P(A,B)。

貝葉斯定理給出了下列關(guān)系:貝葉斯方法在分類應(yīng)用中,通常給定了一個(gè)由若干假設(shè)組成的假設(shè)空間,如樣本的類別空間。分類問(wèn)題就是需要在給定樣本屬性度量值的情況下來(lái)推知其類別,也就是求解

即最大的后驗(yàn)概率。極大似然法的目標(biāo)則是要決定哪一個(gè)假設(shè)能夠最合理地解釋樣本為什么會(huì)具有這些屬性,也就是求解貝葉斯方法的思想則是,P(假設(shè)|證據(jù))=P(假設(shè))*P(證據(jù)|假設(shè))/P(證據(jù)),需要在后驗(yàn)概率和似然度之間考慮假設(shè)與證據(jù)的先驗(yàn)概率的比值,因?yàn)橄闰?yàn)概率分布的變化可能會(huì)使得極大似然估計(jì)與實(shí)際情況存在很大的差異。樸素貝葉斯方法假設(shè)給定先驗(yàn)概率信息和特征值

,應(yīng)用貝葉斯方法還需要計(jì)算條件概率

。如果樣本的屬性是高維數(shù)據(jù),條件概率計(jì)算就非常復(fù)雜。在貝葉斯公式的基礎(chǔ)上增加一個(gè)新的假設(shè)條件,也就是名為“樸素”的獨(dú)立性假設(shè):只要假定任意兩個(gè)特征彼此是條件獨(dú)立的(暫時(shí)不考慮它們實(shí)際上是否存在某種形式的條件依賴),這樣就可以在計(jì)算聯(lián)合概率時(shí),只需把每一個(gè)單獨(dú)屬性的條件概率簡(jiǎn)單相乘。獨(dú)立性假設(shè)的結(jié)果在數(shù)學(xué)上也許不盡嚴(yán)謹(jǐn),但是在實(shí)用性上仍不失為聯(lián)合概率的一種近似解,并且有大量的實(shí)例表明這種做法對(duì)于分類來(lái)說(shuō)已經(jīng)足夠有效。獨(dú)立性可視化

pairs

(iris[1:4],

line.main=1.5,

main

=

"Iris數(shù)據(jù)集特征對(duì)比(紅:setosa

,綠:versicolor,藍(lán):virginica)", pch

=

21,

bg

=

c("red",

"green3",

"blue") [unclass(iris$Species)])E1071包library(e1071)

#加載包e1071classifier

<-

naiveBayes(iris[,1:4],

iris[,5])

#創(chuàng)建分類器

table

(predict(classifier,

iris[,-5]),

iris[,5])

#生成混淆矩陣

#混淆矩陣的結(jié)果

setosa

versicolor

virginica

setosa

50

0

0

versicolor

0

47

3

virginica

0

3

47

在e1071包中包含了樸素貝葉斯模型用戶可以直接調(diào)用naiveBayes(),在參數(shù)中分別給出自變量和因變量。雖然一些特征和獨(dú)立性假設(shè)并不一致,但是還是可以取得非常好的分類效果。泛化性能set.seed

(2018)

#初始化隨機(jī)種子index

<-

sample

(x

=

2,

size

=

nrow

(iris),

replace

=

TRUE,

prob

=

c(0.8,0.2))

#按照80%與20%比例劃分iris.Training

<-

iris[index==1,

]

#訓(xùn)練集iris.Test

<-

iris[index==2,

]

#測(cè)試集classifier

<-

naiveBayes(iris.Training[,1:4],

iris.Training

[,5])table

(predict(classifier,

iris.Test[,-5]),

iris.Test[,5])把數(shù)據(jù)集分成兩部分,分別用于訓(xùn)練與測(cè)試。使用抽樣函數(shù)sample()來(lái)劃分?jǐn)?shù)據(jù)集,按參數(shù)prob中給出的比例隨機(jī)從x中生成數(shù)量等于size的整數(shù)。設(shè)置replcae=TRUE,使用置換抽樣的方法。支持向量機(jī)線性可分:如果在特征空間中存在一個(gè)超平面能夠?qū)⑻卣骺臻g中的實(shí)例分為兩類,使得超平面的任意一側(cè)的實(shí)例全部擁有同一種標(biāo)簽。若找不到這樣的平面,則稱為線性不可分。在線性可分的情況下,在超平面兩側(cè)所有樣本點(diǎn)中,存在某點(diǎn)離該平面最近,則把這個(gè)最近的距離稱為間隔。支持向量機(jī)(SupportVectorMachine,SVM)是一種有監(jiān)督的學(xué)習(xí)方法,可以用于與分類和回歸相關(guān)的數(shù)據(jù)分析任務(wù)。給定一組訓(xùn)練樣本,每一個(gè)樣本都帶有各自的類別標(biāo)簽,支持向量機(jī)的訓(xùn)練目標(biāo)就是構(gòu)建一個(gè)分類模型,將空間中的不同類別的點(diǎn)用盡可能寬的間隔分開(kāi)。線性可分核函數(shù)支持向量機(jī)用到了線性可分的假設(shè)。對(duì)于線性不可分的情形,可以借助核函數(shù)把低維空間中的點(diǎn)映射到高維空間,期望在低維空間中線性不可分的點(diǎn)在高維空間變得線性可分。選擇核函數(shù)是為了可以完成樣本點(diǎn)從低維空間到高維空間的變換。但是,在獲得線性可分性能時(shí),用戶也不希望因此引入過(guò)高的計(jì)算開(kāi)銷。支持向量機(jī)中設(shè)計(jì)核函數(shù)時(shí)只要求它的內(nèi)積形式可以用原空間中點(diǎn)的簡(jiǎn)單函數(shù)來(lái)計(jì)算。因此,高維空間中的超平面可定義為與空間中某個(gè)向量的點(diǎn)積為常數(shù)的點(diǎn)的集合。e1071包中的svm()函數(shù)函數(shù)svm()返回的是一個(gè)SVM類中的對(duì)象,可以使用svm_model$labels查看。下面列出了對(duì)象中的部分屬性:

(1)SV:發(fā)現(xiàn)的支持向量矩陣;(2)labels:分類模式下對(duì)應(yīng)的標(biāo)簽;(3)index:輸入向量中的支持向量索引。svm()函數(shù)的主要核函數(shù)包括:支持向量機(jī)舉例library

("e1071")attach

(iris)x

<-

subset

(iris,

select=-Species)

y

<-

Speciessvm_model

<-

svm

(Species

~

.,

data=iris)

#品種是其他屬性的因變量subset()函數(shù)從iris中取出子集,第一個(gè)參數(shù)表示數(shù)據(jù)集,select是一個(gè)邏輯向量。svm_model默認(rèn)調(diào)用的是最常用核函數(shù)之一的徑向核radial。分類效果>

pred

<-

predict

(svm_model,

x)

>

table

(pred,

y)

ypred

setosa

versicolor

virginica

setosa

50

0

0

versicolor

0

48

2

virginica

0

2

48

從分類效果可以看出,在versicolor和virginica中,各有兩個(gè)樣本被混淆。支持向量機(jī)取得的分類效果現(xiàn)在比決策樹(shù)更好。數(shù)據(jù)預(yù)處理plot

(svm_model,

iris,

Petal.Width

~

Petal.Length,

#因?yàn)閕ris數(shù)據(jù)包括四個(gè)屬性,在二維圖形中需要指定其余二維,才能顯示區(qū)域邊界

slice

=

list

(Sepal.Width

=

2,

Sepal.Length

=

4))從圖中可以觀察到支持向量(用×表示)的分布情況。因?yàn)榘迅呔S數(shù)據(jù)畫(huà)在了二維平面上,而且間隔的選取對(duì)其他兩個(gè)沒(méi)有顯示的維度的特定值設(shè)置的,所以圖中的支持向量并不一定落在邊界附近。參數(shù)優(yōu)化>

svm_model_after_tune

<-

svm

(Species

~

.,

data=iris,

kernel="radial",

cost=2,

gamma=0.8)>

summary

(svm_model_after_tune)>

pred

<-

predict

(svm_model_after_tune,x)

>

table

(pred,

y)

y

pred

setosa

versicolor

virginica

setosa

50

0

0

versicolor

0

49

0

virginica

0

1

50支持向量機(jī)對(duì)參數(shù)敏感。以radial核函數(shù)、損失系數(shù)2(表明了分類器對(duì)錯(cuò)誤分類的容忍度。)以及核函數(shù)參數(shù)0.8訓(xùn)練出一個(gè)新的分類器。從混淆矩陣可以看出結(jié)果的改善。內(nèi)容導(dǎo)航CONTENTS聚類算法特征空間與距離分類算法8.18.28.38.4集成學(xué)習(xí)8.4集成學(xué)習(xí)集成學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域中一個(gè)發(fā)展迅速的分支。其一般模式是將多個(gè)弱學(xué)習(xí)器組合起來(lái)構(gòu)造一個(gè)強(qiáng)學(xué)習(xí)器。舉例來(lái)說(shuō),我們可以把一個(gè)隨機(jī)森林、一個(gè)支持向量機(jī)和一個(gè)簡(jiǎn)單的線性回歸模型組合起來(lái),集成在一起構(gòu)成一個(gè)性能更強(qiáng)大的最終預(yù)測(cè)模型。其中的關(guān)鍵點(diǎn)是借助單個(gè)預(yù)測(cè)模型的多元性來(lái)形成一個(gè)強(qiáng)大的組合。集成學(xué)習(xí)的基本方法在集成學(xué)習(xí)時(shí),如果給定了一組基礎(chǔ)學(xué)習(xí)算法,針對(duì)一條數(shù)據(jù),每一個(gè)算法都可以做出自己的預(yù)測(cè)。在最終決策時(shí),要通盤考慮所有的預(yù)測(cè),即使得到的結(jié)論可能會(huì)和某一個(gè)算法的結(jié)果相反。基本的決策方法包括如下幾種。(1)均值法:在回歸時(shí),對(duì)所有單一算法的預(yù)測(cè)值取均值;如果是分類問(wèn)題,則對(duì)所有類別出現(xiàn)的概率求均值。(2)投票法:處理分類問(wèn)題時(shí),在眾多算法對(duì)結(jié)果的投票中選取得票最多的作為預(yù)測(cè)值。(3)加權(quán)平均法:給不同的算法賦以不等的權(quán)值,對(duì)它們的預(yù)測(cè)結(jié)果做加權(quán)平均,把加權(quán)平均值作為輸出。

學(xué)習(xí)的組合策略幾種廣泛運(yùn)用的學(xué)習(xí)模型組合策略在R語(yǔ)言中也獲得了相應(yīng)的支持。(1)Bagging(也叫Bootstrap):是一種抽樣方法,在包含n條記錄的原始數(shù)據(jù)集中隨機(jī)選擇n個(gè)觀察樣本。采用的是有放回的隨機(jī)抽樣:每一次樣本選擇時(shí),原始數(shù)據(jù)集中的每一條記錄都具有相同的幾率被選中。因此,在n個(gè)樣本中,可能會(huì)存在很多條重復(fù)記錄。(2)Boosting:使用多個(gè)模型組成鏈?zhǔn)浇Y(jié)構(gòu),每一個(gè)模型學(xué)習(xí)改正前一個(gè)模型的錯(cuò)誤。(3)Stacking:構(gòu)建多個(gè)(一般類型不同的)模型和一個(gè)超級(jí)模型,后者用于學(xué)習(xí)利用前者的輸出得到總體預(yù)測(cè)值的最佳組合方式。選擇模型的基本原則:(1)單個(gè)模型需要滿足特定的準(zhǔn)確率條件。(2)不同模型的預(yù)測(cè)之間盡可能不要高度相關(guān)。隨機(jī)森林隨機(jī)森林是一種基于Bagging技術(shù)的集成學(xué)習(xí)方法。首先建立起一座由很多棵決策樹(shù)組成的森林,為了降低這些樹(shù)之間決策的相關(guān)性,使用Bootstrap采樣方法來(lái)獲得隨機(jī)樣本去訓(xùn)練不同的樹(shù);然后,在構(gòu)建一棵決策樹(shù)的時(shí)候也不會(huì)用到數(shù)據(jù)的全部特征,而只是分別使用它們的一些子集;最后,森林做出總體的預(yù)測(cè)時(shí),根據(jù)每一棵個(gè)體決策樹(shù)獨(dú)立的預(yù)測(cè)結(jié)果(如用投票法則決出多數(shù)票,或用均值法則計(jì)算均值等)生成最終預(yù)測(cè)。隨機(jī)森林雖然集成的是類型相同的決策樹(shù),但借助隨機(jī)性減少了決策樹(shù)之間的相關(guān)性,在最終的集體決策時(shí)可以克服單一決策樹(shù)的不足,因此,可以明顯地改進(jìn)模型的總體性能。和決策樹(shù)一樣,隨機(jī)森林既可以用于數(shù)值型因變量,也可以用于分類型的因變量,對(duì)不同數(shù)據(jù)變量分別建立起回歸模型和分類模型。隨機(jī)森林構(gòu)建隨機(jī)森林決策樹(shù)的方法隨機(jī)森林中的每一棵樹(shù)都按照以下步驟構(gòu)建:

(1)隨機(jī)選擇樣本:比如,選取全部數(shù)據(jù)的大約2/3用于訓(xùn)練,樣本采用有放回的隨機(jī)抽樣方式從原始數(shù)據(jù)中抽??;(2)隨機(jī)選擇變量:在用于預(yù)測(cè)的全部特征變量中隨機(jī)選取若干個(gè),將其中劃分效果最好的特征變量用于樹(shù)的節(jié)點(diǎn)劃分。隨機(jī)森林的隨機(jī)性綜合體現(xiàn)在兩個(gè)方面:首先,在建立每一棵樹(shù)時(shí)采用隨機(jī)觀察的方式得到樣本;其次,在樹(shù)的節(jié)點(diǎn)劃分時(shí)隨機(jī)選擇變量。隨機(jī)森林的局限性:隨機(jī)森林對(duì)于全新的數(shù)據(jù)泛化效果一般。隨機(jī)森林舉例>

install.packages("randomForest")>

library(randomForest)>

set.seed

(2018)

#生成隨機(jī)種子>

index

<-

sample

(2,

nrow(iris),

replace=TRUE,

prob=c(0.8,0.2))>

trainData

<-

iris[index==1,]

#把數(shù)據(jù)集劃分成訓(xùn)練集與測(cè)試集>

testData

<-

iris[index==2,]>

#調(diào)用randomForst建模,由100棵樹(shù)組成>

iris_rf

<-randomForest

(Species~.,

data=trainData,

ntree=100,

proximity=TRUE)安裝并載入randomForest包。在隨機(jī)森林算法中需要考慮兩個(gè)重要參數(shù):森林中樹(shù)的數(shù)量ntree,以及每一棵樹(shù)中用到的隨機(jī)變量的個(gè)數(shù)mtry。查看隨機(jī)森林對(duì)象Call:randomForest(formula=Species~.,data=trainData,ntree=100,proximity=TRUE)Typeofrandomforest:classificationNumberoftrees:100No.ofvariablestriedateachsplit:2OOBestimateoferrorrate:5.47%Confusionmatrix:setosaversicolorvirginicaclass.errorsetosa42000.00000000versicolor03830.07317073virginica04410.08888889

檢查對(duì)象iris_rf的內(nèi)容。默認(rèn)值mtry=2?;煜仃嚱o出了分類效果。泛型函數(shù)plotplot(iris_rf)函數(shù)的執(zhí)行結(jié)果如圖所示??梢钥闯鲥e(cuò)誤率隨著森林中決策樹(shù)的數(shù)量的增加而趨于穩(wěn)定。使用隨機(jī)森林預(yù)測(cè)>

irisPred<-predict(iris_rf,newdata=testData)>table(irisPred,testData$Species)

irisPredsetosaversicolorvirginicasetosa800versicolor090virginica005

使用predict函數(shù)對(duì)測(cè)試集進(jìn)行預(yù)測(cè)。預(yù)測(cè)結(jié)果顯示出隨機(jī)森林的良好性能。一般的堆疊式集成學(xué)習(xí)在集成學(xué)習(xí)中,還可以使用不同類型的模型來(lái)改善學(xué)習(xí)的效果。例如,在使用的底層模型中,分別選擇了決策樹(shù)、KNN和支持向量機(jī)作為基礎(chǔ)學(xué)習(xí)算法。再次使用決策樹(shù)作為上層的模型。在R語(yǔ)言中,有很多支持集成學(xué)習(xí)的包,在示例中使用的是比較簡(jiǎn)單的caret包。示例>

library

(mlbench)>

data

(Ionosphere)>

str

(Ionosphere)'data.frame':

351

obs.

of

35

variables:

$

V1

:

Factor

w/

2

levels

"0","1":

2

2

2

2

2

2

2

1

2

2

...

$

V2

:

Factor

w/

1

level

"0":

1

1

1

1

1

1

1

1

1

1

...

$

V3

:

num

0.995

1

1

1

1

......$

V34

:

num

-0.453

-0.0245

-0.3824

1

-0.657

...

$

Class:

Factor

w/

2

levels

"bad","good":

2

1

2

1

2

1

2

1

2

1

...

下載并安裝好caret包。使用機(jī)器學(xué)習(xí)標(biāo)準(zhǔn)數(shù)據(jù)集之一的Ionoshpere(包含在mlbench包中)。Ionosphere是一個(gè)關(guān)于電離層的數(shù)據(jù)集,包含了34個(gè)自變量(V1~V34)和1個(gè)二值分類因變量(Class)。劃分?jǐn)?shù)據(jù)集>

#加載caret包>

library('caret')>

#選擇隨機(jī)種子>

set.seed(1)>

#隨機(jī)生成索引向量>

index

<-

createDataPartition(Ionosphere$Class,

p=0.75,

list=FALSE)>

#劃分訓(xùn)練集和測(cè)試集>

trainSet

<-

Ionosphere[

index,]>

testSet

<-

Ionosphere[-index,]按照75%和25%的比例把兩個(gè)Class分別分配給兩個(gè)子集。定義變量#分別定義模型中的自變量和因變量

predictors<-c("V1",

"V2",

"V3",

"V4",

"V5","V6",

"V7",

"V8",

"V9",

"V10",

"V11",

"V12",

"V13",

"V14",

"V15","V16",

"V17",

"V18",

"V19",

"V20","V21",

"V22",

"V23",

"V24",

"V25","V26",

"V27",

"V28",

"V29",

"V30","V31",

"V32",

"V33",

"V34")

outcomeName

<-

'Class'n

<-

names

(trainSet)predictors

<-

c

(n[!n

%in%

"Class"])按名稱逐一定義因變量(outcomeName)與自變量(predictors)相當(dāng)繁瑣。除Class之外所有的變量名都是自變量。因此,可以利用了變量名函數(shù)names()來(lái)簡(jiǎn)化操作。底層模型:KNNmodel_knn

<-

train

(trainSet[,predictors],trainSet[,outcomeName],

method='knn',

trControl=fitControl,

tuneLength=3)

#使用KNN模型預(yù)測(cè)測(cè)試集

testSet$pred_knn

<-

predict

(object

=

model_knn,testSet[,predictors])使用class包中的KNN模型。用混淆絕陣檢驗(yàn)效果。精度

:

0.8391。

ReferencePrediction

bad

good

bad

18

1

good

13

55底層模型2:決策樹(shù)library(rpart)model_dt

<-

train

(trainSet[,predictors],trainSet[,outcomeName],

method='rpart',

trControl=fitControl,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論