全部版块 我的主页
论坛 站务区 十一区 新手入门区
1008 0
2018-04-07
install.packages("kknn")
library(kknn)
data(miete)
head(miete)
dim(miete)
summary(miete)

library(sampling)
n=round(2/3*nrow(miete)/5)
n
sub_train=strata(miete,stratanames="nmkat",size=rep(n,5),method="srswor")
Error in strata(miete, stratanames = "nmkat", size = rep(n, 5), method = "srswor") : 没有"strata"这个函数
head(sub_train)
data_train=getdata(miete[,c(-1,-3,-12)],sub_train$ID_unit)  
data_test=getdata(miete[,c(-1,-3,-12)],-sub_train$ID_unit)
dim(data_train);dim(data_test)
head(data_test)

install.packages("MASS")
library(MASS)
fit_lda1=lda(nmkat~.,data_train)
names(fit_lda1)
fit_lda1$prior
fit_lda1$counts
fit_lda1$means
fit_lda1$scaling
fit_lda1$lev
fit_lda1$svd
fit_lda1$N     
fit_lda1$call
fit_lda1$terms
fit_lda1$xlevels
fit_lda1

fit_lda2=lda(data_train[,-12],data_train[,12])
fit_lda2

opar <- par(no.readonly = TRUE)
par(mar = rep(2, 4))    # to be simple

par(opar)

plot(fit_lda1)
plot(fit_lda1,dimen=1)
plot(fit_lda1,dimen=2)

pre_lda1=predict(fit_lda1,data_test)
pre_lda1$class
pre_lda1$posterior

table(data_test$nmkat,pre_lda1$class)
error_lda1=sum(as.numeric(as.numeric(pre_lda1$class)!=as.numeric(data_test$nmkat)))/nrow(data_test)
error_lda1

fit_qda=qda(data_train[,-12],data_train[,12])
NaiveBayes(formula, data, ..., subset, na.action = na.pass)

NaiveBayes(x, grouping, prior, usekernel = FALSE, fL = 0, ...)

install.packages("klaR")
library(klaR)

fit_Bayes1=NaiveBayes(nmkat~.,data_train)
names(fit_Bayes1)
fit_Bayes1$apriori
fit_Bayes1$tables
fit_Bayes1$levels
fit_Bayes1$call
fit_Bayes1$usekernel
fit_Bayes1$varnames

fit_Bayes2=NaiveBayes(data_train[,-12],data_train[,12])
fit_Bayes2

plot(fit_Bayes1,vars="wfl",n=50,col=c(1,"darkgrey",1,"darkgrey",1)) # 占地面积
plot(fit_Bayes1,vars="mvdauer",n=50,col=c(1,"darkgrey",1,"darkgrey",1)) # 租赁期
plot(fit_Bayes1,vars="nmqm",n=50,col=c(1,"darkgrey",1,"darkgrey",1)) # 每平方米净租金

pre_Bayes1=predict(fit_Bayes1,data_test)
pre_Bayes1

table(data_test$nmkat,pre_Bayes1$class)
error_Bayes1=sum(as.numeric(as.numeric(pre_Bayes1$class)!=as.numeric(data_test$nmkat)))/nrow(data_test)
error_Bayes1


install.packages("class")
library(class)

fit_pre_knn=knn(data_train[,-12],data_test[,-12],cl=data_train[,12])
fit_pre_knn
table(data_test$nmkat,fit_pre_knn)
error_knn=sum(as.numeric(as.numeric(fit_pre_knn)!=as.numeric(data_test$nmkat)))/nrow(data_test)
error_knn

error_knn=rep(0,20)
for(i in 1:20)
{ fit_pre_knn=knn(data_train[,-12],data_test[,-12],cl=data_train[,12],k=i)
  error_knn=sum(as.numeric(as.numeric(fit_pre_knn)!=as.numeric(data_test$nmkat)))/nrow(data_test)}
error_knn
plot(error_knn,type="l",xlab="K")

# kknn #
# kknn(formula = formula(train), train, test, na.action = na.omit(),
  k = 7, distance = 2, kernel = "optimal", ykernel = NULL, scale=TRUE,
  contrasts = c(’unordered’ = "contr.dummy", ordered = "contr.ordinal"))

install.packages("kknn")
library(kknn)
fit_pre_kknn=kknn(nmkat~.,data_train,data_test[,-12])
fit_pre_kknn
summary(fit_pre_kknn)
fit=fitted(fit_pre_kknn)
fit

table(data_test$nmkat,fit)
error_kknn=sum(as.numeric(as.numeric(fit)!=as.numeric(data_test$nmkat)))/nrow(data_test)
error_kknn

error_kknn=rep(0,20)
for(i in 1:20)
{ fit_pre_kknn=kknn(nmkat~.,data_train,data_test[,-12],k=i)
  error_kknn=sum(as.numeric(as.numeric(fitted(fit_pre_kknn))!=as.numeric(data_test$nmkat)))/nrow(data_test)}
error_kknn
plot(error_kknn,type="l",xlab="K")

sub=matrix(0,4,30)
for(i in 1:4)  sub[i,]=sample(which(miete$nmkat==i),30)
SUB=sample(which(miete$nmkat=="5"),200)
subb=matrix(0,5,20)
for(i in 1:5)  subb[i,]=sample(which(miete$nmkat==i),20)
data_train=miete[c(sub,SUB),c(-1,-3,-12)]  
data_test=miete[subb,c(-1,-3,-12)]
dim(data_train);dim(data_test)

# 一个案例 #

setwd("D://book")
data=read.table("u.data.txt")
data=data[,-4]
names(data)=c("userid","itemid","rating")

# 使用函数 #
MovieLens_KNN(Userid=1,Itemid=61,n=50,K=10)

# 函数 #

Userid=1;Itemid=61;n=50;K=10

MovieLens_KNN=function(Userid,Itemid,n,K) {

sub=which(data$userid==Userid)
if(length(sub)>=n) sub_n=sample(sub,n)
if(length(sub)<n) sub_n=sample(sub,length(sub))
known_itemid=data$itemid[sub_n]
unknown_itemid=Itemid

unknown_sub=which(data$itemid==unknown_itemid)
user=data$userid[unknown_sub[-1]]

data_all=matrix(0,1+length(user),2+length(known_itemid))
data_all=data.frame(data_all)
names(data_all)=c("userid",paste("unknown_itemid_",Itemid),paste("itemid_",known_itemid,sep=""))
item=c(unknown_itemid,known_itemid)
data_all$userid=c(Userid,user)

for (i in 1:nrow(data_all))
{
  data_temp=data[which(data$userid==data_all$userid),]
  for (j in 1:length(item))
  {  if(sum(as.numeric(data_temp$itemid==item[j]))!=0)
     {data_all[i,j+1]=data_temp$rating[which(data_temp$itemid==item[j])]}
  } }

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]

fit=knn(data_train_x,data_test_x,cl=data_train_y,k=K)
list("data_all:"=data_all,"True Rating:"=data_test_y,"Predict Rating:"=fit,"User ID:"=Userid,"Item ID:"=Itemid)
}

user1=NULL
for(Item in 1:20)
user1=c(user1,MovieLens_KNN(Userid=1,Itemid=Item,n=50,K=10)$`True Rating:`)
user1

which(user1==5)










二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群