幾個用R實現Data Mining的例子

2021-09-06 04:43:58 字數 4675 閱讀 4663

線性回歸:

x<-1:10

y<-x+rnorm(10,0,1)

fit<-lm(y~x)

summary(fit)

關聯挖掘:

library(arules)

data<-paste("item 1, item 2", "item2, item3", sep="\n")#乙個簡單的transaction資料的例子

write(data, file = "demo_basket')

tr<-read.transactions("demo_basket",format="basket",sep=",")

data("adult")#用到了arules中的adult資料

rules<-apriori("adult, parameter=list(supp=0.5,conf=0.9,target="rules"))#學習規則

聚類分析:

x<-rbind(matrix(rnorm(100,sd=0.3), ncol=2), matrix(rnorm(100, mean=1, sd=0.3), ncol=2)) #構造了兩組正態分佈的資料(均值分別是0和1),並將他們組合起來

cl<-kmeans(x,2)#聚類分析的結果

plot(x, col=cl$cluster)#聚類結果的視覺化

points(cl$centers, col=1:2, pch=8, cex=2)

分類library(e1071)#要安裝e1071這個包

data(iris)#用著名的iris資料

x<-subset(iris, select=-species)#除掉標籤的資料

y<-iris$species#標籤資料

model<-svm(x,y)#訓練模型

summary(model)#檢視模型引數

pred<-predict(model,x)#進行**

table(pred,y)#看**結果

r實現的item-based cf推薦演算法。

123

4567

891011

1213

1415

1617

1819

2021

2223

24

# 讀入資料,原資料是user-subject的收藏二元組

data = read.table('data.dat', sep=',', header=true)

# 標識user與subject的索引

user = unique(data$user_id)

subject = unique(data$subject_id)

uidx = match(data$user_id, user)

iidx = match(data$subject_id, subject)

# 從二元組構造收藏矩陣

m = matrix(0, length(user), length(subject))

i = cbind(uidx, iidx)

m[i] = 1

# 對列向量(subject向量)進行標準化,%*%為矩陣乘法

mod = colsums(m^2)^0.5 # 各列的模

mm = m %*% diag(1/mod) # m乘以由1/mod組成的對角陣,實質是各列除以該列的模

#crossprod實現mm的轉置乘以mm,這裡用於計算列向量的內積,s為subject的相似度矩陣

s = crossprod(mm)

# user-subject推薦的分值

r = m %*% s

k = 5

# 取出前5個分值最大的subject

# 輸出資料

write.table(paste(user, res, sep=':'), file='result.dat', quote=false, row.name=false, col.name=false)

除去注釋,有效**只有16行。其中大量運用了向量化的函式與處理方式,所以沒有任何的顯式迴圈結構,關於向量化更詳細的敘述可看這裡。

源資料檔案data.dat的內容如下所列:

user_id,subject_id

1,11,3

1,71,13

2,22,5

2,62,7

2,92,10

2,11

3,13,2

3,33,4

3,73,9

3,10

5,13

6,16,3

6,46,5

6,86,10

8,18,2

8,38,5

8,68,7

8,89,13

10,12

11,2

11,3

11,4

11,6

11,8

11,9

11,13

12,12

13,3

13,6

13,7

15,4

15,12

15,13

16,2

16,3

16,4

16,7

16,8

17,2

17,3

17,4

17,5

17,6

17,7

17,8

17,9

17,10

17,11

18,2

18,3

19,2

19,3

19,5

19,6

19,9

19,10

19,11

19,12

20,1

20,3

20,4

20,7

20,13

21,1

21,6

21,8

21,9

21,11

21,12

21,13

22,6

23,2

23,4

23,9

23,12

24,1

24,5

24,9

25,2

25,6

25,10

25,11

26,2

26,3

26,8

27,3

27,6

27,12

27,13

28,1

28,2

28,3

28,5

28,7

28,9

28,10

28,11

28,12

28,13

29,1

29,2

29,3

29,4

29,5

29,6

29,7

29,8

29,9

29,10

30,6

30,7

30,9

30,13

31,6

31,11

32,1

32,5

33,2

33,13

34,3

34,7

34,8

34,9

34,10

34,13

35,3

35,4

35,5

35,6

35,7

36,2

36,3

36,4

36,6

36,7

36,8

36,9

36,11

36,12

36,13

38,5

41,1

41,3

41,4

41,5

41,6

41,7

41,11

42,2

42,3

42,7

42,8

42,9

42,10

42,11

43,2

43,6

43,10

43,11

43,12

### forward stepwise regression in r

out0 = lm(y ~ 1) ### fit the initial model (intercept only)

out = step(out0,direction="forward",trace=true,scope= y ~ x1 + x2 + x3 + x4 + x5)

summary(out)

### lasso

library(lars)

out = lars(x,y) ### x is a matrix of covariates

summary(out)

plot(out)

### gamma ray data

kernreg = function(y,x,h,newx)

return(f)

}cv = function(y,x,h)

}cv = cv/n

return(cv)

}

用R實現判別分析

判別分析判斷樣本所屬的類別,其依據是那些已知類別樣本的屬性資訊。主流的三大判別分析演算法費希爾判別 貝葉斯判別和距離判別 費希爾判別的基本思想就是投影,即將高維空間的點向低維空間投影,從而簡化問題進行處理 投影軸的要求,保證每一類之內的投影值所形成的類內離差盡可能小,不同類之間的投影所形成的類間離差...

用R實現KNN推薦案例

整體思路 1,選擇使用者已給出評分的使用者假設有m位符合的使用者,獲取電影id 2,再找出對某電影進行評分的使用者,假設有m位符合的使用者,並獲取使用者id 3,利用以上獲取的三組id,構造訓練集data train和測試集data test。4,將相應的訓練集與測試集按順序放入knn 函式,即可 ...

用R實現神經網路

神經網路是一種運算模型,由大量的節點 或神經元 和之間的相互連線構成,每個節點代表一種特定的輸出函式。每兩個節點間的連線都代表乙個對於通過該連線訊號的加權值,稱為權重,這相當於神經網路的記憶。神經網路分為倆類 分類和回歸 注意點1難解釋2會學習過度,需要恰當的使用嚴格衡量神經網路的方法,如測試集和交...