線性回歸:
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推薦演算法。
1234567
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_id1,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 rout0 = 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 datakernreg = 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會學習過度,需要恰當的使用嚴格衡量神經網路的方法,如測試集和交...