整體思路
1,選擇使用者已給出評分的使用者假設有m位符合的使用者,獲取電影id
2,再找出對某電影進行評分的使用者,假設有m位符合的使用者,並獲取使用者id
3,利用以上獲取的三組id,構造訓練集data-train和測試集data—test。
4,將相應的訓練集與測試集按順序放入knn()函式,即可**出使用者對電影的評分值
#movielens | grouplens資料集位址
setwd("c://users//administrator//desktop//資料分析//ml-100k")#設定常用工作路徑
library(class)
data=read.table("u.data")#讀取資料
data=data[,-4]#不需要時間戳變數,刪除
names(data)=c("userid","itemid","rating")#命名data的各變數名
head(data);dim(data)
userid=1;itemid=61;n=50;k=10#設定4個引數值,
movielnes_knn=function(userid,itemid,n,k)#編寫乙個總函式可以反覆使用
}} data_all
data_test_x=data_all[1,c(-1,-2)]#獲取測試集的已知部分
data_test_y=data_all[1,2]#獲取測試集的待**值
data_train_x=data_all[-1,c(-1,-2)]#獲取訓練集的已知部分
data_train_y=data_all[-1,2]#獲取訓練集的待**值
dim(data_test_x);length(data_test_y)
dim(data_train_x);length(data_train_y)
fit=knn(data_train_x,data_test_x,cl=data_train_y,k=k)#進行knn判別
list("data_all:"=data_all,"true rating:"=data_test_y,"predcit rating:"=fit,"user id:"=userid,"item id:"=itemid)
}user1=null
for(item in 1:20)
user1=c(user1,movielnes_knn(userid=1,itemid=item,n=50,k=10)$'true rating:')
user1
which(user1==5)#顯示評分為5的電影
#**使用者對電影的評分,推薦評分為5的電影
kNN方法R實現
參考資料 1 基於肖凱大牛的部落格 2 r in a nutshell 3 data mining with r 翻譯開始 r in a nutshell 與回歸類似,線性方法對於分類計算時存在一些問題。下面介紹幾個ml的分類演算法 k近鄰 其中乙個最簡單的處理分類問題的技巧是k近鄰演算法。工作原理...
kNN方法R實現
參考資料 1 基於肖凱大牛的部落格 2 r in a nutshell 3 data mining with r 翻譯開始 r in a nutshell 與回歸類似,線性方法對於分類計算時存在一些問題。下面介紹幾個ml的分類演算法 k近鄰 其中乙個最簡單的處理分類問題的技巧是k近鄰演算法。工作原理...
R語言實現KNN 演算法
knn是機器學習中最簡單的分類演算法之一 就是把每乙個測試樣本跟訓練樣本中的每乙個樣本求他們的歐式距離,然後選出最小的幾個,裡面哪乙個類多 這個測試樣本就屬於哪乙個類 用r語言自帶的iris 寫了一下 data iris length iris 1 idx sample 150,100 train ...