-
Notifications
You must be signed in to change notification settings - Fork 0
/
bigtest.Rmd
120 lines (97 loc) · 1.88 KB
/
bigtest.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
---
title: "test"
output: html_document
---
###cart
```{r}
library(rpart)
x=kyphosis
colnames(x)=c("kyphosis","age","number","start")
model=rpart(kyphosis~.,data=x)
par(mai=rep(0.1,4))
plot(model)
text(model)
```
###svm
```{r}
library(e1071)
model=svm(kyphosis~.,data=x)
pre=predict(model,data=x[,2:4])
per=sum(pre==x[,1])/length(x[,1])
sprintf("正確率為%s%%",per*100)
```
###logist
```{r}
model=glm(kyphosis~.,data=x,family = "binomial")
pre=model[[3]]
pre[pre>0.5]="present"
pre[pre<=0.5]="absent"
per=sum(pre==x$kyphosis)/length(x[,1])
sprintf("正確率為%s%%",per*100)
```
###2
```{r}
x=read.table(file="C:\\Users\\tsr\\Desktop\\2222\\test2-1.txt")
y=read.table(file="C:\\Users\\tsr\\Desktop\\2222\\test2-2.txt")
model=kmeans(x = x,centers = 4)
x[,4]=model$cluster
x[,5]=y
x=x[order(x[,4]),]
modellist=list()
label=paste("group",1:4,sep="")
for (i in 1:4){
assign(label[i],x[x[,4]==i,])
modellist[[i]]=get(label[i])
}
modellist
dd=x[,4]
names(dd)=x[,5]
hc = hclust(dist(dd))
plot(hc,sub=" ", axes = FALSE,main=" ")
```
###3
###a
```{r}
###a
x=read.table(file="C:\\Users\\tsr\\Desktop\\2222\\test3.txt",sep=",")
```
###b
```{r}
###b
plot(x$V4~x$V5,pch=21,bg=x$V1)
```
###c
```{r}
###c
library(MASS)
for (i in 2:dim(x)[2]){
x[,i]=x[,i]-mean(x[,i])
}
ld=lda(x$V1~.,data=x)
z=predict(ld)
per=sum(z$class==x[,1])/length(x[,1])
sprintf("正確率為%s%%",per*100)
```
###d
```{r}
coef=ld[[4]]
mx=as.matrix(x)
newvar=mx[,2:14] %*% coef
newvar=cbind(newvar,x[,1])
plot(newvar[,1]~newvar[,2],pch=21,bg=z$class)
```
###e
```{r}
mean1=mean(newvar[newvar[,3]==1,1])
mean2=mean(newvar[newvar[,3]==2,1])
mean3=mean(newvar[newvar[,3]==3,1])
rule1=(mean1+mean2)/2
rule2=(mean2+mean3)/2
newvar=cbind(newvar,0)
newvar[newvar[,1]<rule1,4]=1
newvar[rule1<=newvar[,1]& newvar[,1] <=rule2,4]=2
newvar[newvar[,1]>rule2,4]=3
per=sum(newvar[,3]==newvar[,4])/length(newvar[,1])
sprintf("正確率為%s%%",per*100)
######
```