3 #data<-read.table('output/corpus_bin.csv',header=TRUE,sep='\t')
5 multipam<-function(data,x=9){
9 for (m in 1:length(dtable)) {
10 if (sum(dtable[m-a])==0) {
12 dtable<-dtable[,-(m-a)]
18 #construction de la matrice des distances
19 dissmat<-dist(dtable,method='binary')#FIXME: rendre optionnelle la methode
21 pm<-pam(dissmat,diss=TRUE,k=2)
23 #listclasse<-ifelse(coordrow<0,paste('CLASSE',clnb,sep=''),paste('CLASSE',clnb+1,sep=''))
24 #selection de la classe la moins homogène
27 listclust<-clusinf[,2]
29 listclust<-rbind(listclust,clusinf[,2])
32 listclasse=as.data.frame(pm$clustering)[,1]
33 #ajout du classement au tableau
34 dtable<-transform(dtable,cl1=listclasse)
37 listrownamedtable<-rownames(dtable)
38 listrownamedtable<-as.integer(listrownamedtable)
39 newcol<-vector(length=nrow(dataori))
40 #remplissage de la nouvelle colonne avec les nouvelles classes
42 for (ligne in listrownamedtable) {
44 newcol[ligne]<-as.vector(dtable$cl1[num])[1]
46 #recuperation de la classe precedante pour les cases vides
47 matori<-as.matrix(dataori)
50 for (ligne in 1:length(newcol)) {
51 # print(newcol[ligne])
52 if (newcol[ligne]==0) { # ce test renvoie un warning
53 newcol[ligne]<-matori[ligne,length(matori[1,])]
59 #???????????????????????????????????
60 #je ne comprends pas : j'ai vraiment besoin de faire ces deux actions pour ajouter la nouvelle colonne aux donnees ?
61 #si je ne le fais pas, ca plante...
62 dataori<-cbind(dataori,newcol)
63 dataori<-transform(dataori,newcol=newcol)
64 #???????????????????????????????????
66 #liste des noms de colonne
67 #colname<-colnames(dataori)
68 #nom de la derniere colonne
69 #colname<-colname[length(dataori)]
71 colclasse<-as.character(dataori[,ncol(dataori)])
73 #les modalites de la derniere colonne
74 classes<-levels(as.factor(colclasse))
76 #determination de la classe la plus grande
77 tailleclasse<-paste(NULL,1:length(classes))
79 for (classe in classes) {
81 dtable<-dataori[dataori[length(dataori)]==classe,]
82 tailleclasse[b]<-length(dtable[,1])
84 tailleclasse<-as.integer(tailleclasse)
86 plusgrand<-which(tailleclasse==max(tailleclasse))
88 #???????????????????????????????????
89 #Si 2 classes ont des effectifs egaux, on prend la premiere de la liste...
90 if (length(plusgrand)>1) {
91 plusgrand<-plusgrand[1]
93 #????????????????????????????????????
95 #constuction du prochain tableau a analyser
96 classe<-classes[plusgrand]
97 dtable<-dataori[dataori[length(dataori)]==classe,]
98 dtable<-dtable[,1:(length(dtable)-i)]
99 #elimination des colonnes ne contenant que des 0
101 for (m in 1:length(dtable)) {
102 if (sum(dtable[m-a])==0) {
103 dtable<-dtable[,-(m-a)]
108 dataori[(length(dataori)-x+1):length(dataori)]
111 dm<-read.csv2('/home/pierre/fac/maitrise/classification/simi01.csv',row.names=1)
113 #dataout<-CHD(data,9)
116 #dissmat<-daisy(dataout, metric = 'gower', stand = FALSE)
117 #chd<-diana(dissmat,diss=TRUE,)
120 #pour tester le type, passer chaque colonne en matice et faire mode(colonne)
121 #for (i in 1:13) {tmp<-as.matrix(data[i]);print(mode(tmp))}