--- /dev/null
+---
+title: morpheus...........
+
+output:
+ pdf_document:
+ number_sections: true
+ toc_depth: 1
+---
+
+```{r setup, results="hide", include=FALSE}
+knitr::opts_chunk$set(echo = TRUE, include = TRUE,
+ cache = TRUE, comment="", cache.lazy = FALSE,
+ out.width = "100%", fig.align = "center")
+```
+
+0) Tell that we try to learn classification parameters in a non-EM way, using algebric manipulations.
+1) Model.
+2) Algorithm (as in article)
+3) Experiments: show package usage
+
+# Expériences
+
+```{r, results="show", include=TRUE, echo=TRUE}
+library(Rmixmod) #to get clustering probability matrix
+library(ClusVis)
+library(FactoMineR) #for PCA
+
+plotPCA <- function(prob)
+{
+ par(mfrow=c(2,2), mar=c(4,4,2,2), mgp=c(2,1,0))
+ partition <- apply(prob, 1, which.max)
+ n <- nrow(prob)
+ K <- ncol(prob)
+ palette <- rainbow(K, s=.5)
+ cols <- palette[partition]
+ tmp <- PCA(rbind(prob, diag(K)), ind.sup=(n+1):(n+K), scale.unit=F, graph=F)
+ scores <- tmp$ind$coord[,1:3] #samples coords, by rows
+ ctrs <- tmp$ind.sup$coord #projections of indicator vectors (by cols)
+ for (i in 1:2)
+ {
+ for (j in (i+1):3)
+ {
+ absc <- scores[,i]
+ ords <- scores[,j]
+ xrange <- range(absc)
+ yrange <- range(ords)
+ plot(absc, ords, col=c(cols,rep(colors()[215],K),rep(1,K)),
+ pch=c(rep("o",n),rep(as.character(1:K),2)),
+ xlim=xrange, ylim=yrange,
+ xlab=paste0("Dim ", i, " (", round(tmp$eig[i,2],2), "%)"),
+ ylab=paste0("Dim ", j, " (", round(tmp$eig[j,2],2), "%)"))
+ ctrsavg <- t(apply(as.matrix(palette), 1,
+ function(cl) c(mean(absc[cols==cl]), mean(ords[cols==cl]))))
+ text(ctrsavg[,1], ctrsavg[,2], as.character(1:K), col=colors()[215])
+ text(ctrs[,i], ctrs[,j], as.character(1:K), col=1)
+ title(paste0("PCA ", i, "-", j, " / K=",K))
+ }
+ }
+ # TODO:
+ plot(0, xaxt="n", yaxt="n", xlab="", ylab="", col="white", bty="n")
+}
+
+plotClvz <- function(xem, alt=FALSE)
+{
+ par(mfrow=c(2,2), mar=c(4,4,2,2), mgp=c(2,1,0))
+ if (alt) {
+ resvisu <- clusvis(log(xem@bestResult@proba), xem@bestResult@parameters@proportions)
+ } else {
+ resvisu <- clusvisMixmod(xem)
+ }
+ plotDensityClusVisu(resvisu, positionlegend=NULL)
+ plotDensityClusVisu(resvisu, add.obs=TRUE, positionlegend=NULL)
+ # TODO:
+ plot(0, xaxt="n", yaxt="n", xlab="", ylab="", col="white", bty="n")
+ plot(0, xaxt="n", yaxt="n", xlab="", ylab="", col="white", bty="n")
+}
+
+grlplot <- function(x, K, alt=FALSE) #x: data, K: nb classes
+{
+ xem <- mixmodCluster(x, K, strategy=mixmodStrategy(nbTryInInit=500,nbTry=25))
+ plotPCA(xem@results[[1]]@proba)
+ plotClvz(xem, alt)
+}
+```
+
+## Iris data
+
+```{r, results="show", include=TRUE, echo=TRUE}
+data(iris)
+x <- iris[,-5] #remove class info
+for (i in 3:5)
+{
+ print(paste("Resultats en", i, "classes"))
+ grlplot(x, i)
+}
+```
+
+### finance dataset (from Rmixmod package)
+#
+#This dataset has two categorical attributes (the year and financial status), and four continuous ones.
+#
+#Warnings, some probabilities of classification are exactly equal to zero then we cannot use ClusVis
+#
+#```{r, results="show", include=TRUE, echo=TRUE}
+#data(finance)
+#x <- finance[,-2]
+#for (i in 3:5)
+#{
+# print(paste("Resultats en", i, "classes"))
+# grlplot(x, i, TRUE)
+#}
+#```
+#
+### "Cathy dataset" (12 clusters)
+#
+#Warnings, some probabilities of classification are exactly equal to zero then we cannot use ClusVis
+#
+#```{r, results="hide", include=TRUE, echo=TRUE}
+#cathy12 <- as.matrix(read.table("data/probapostCatdbBlocAtrazine-K12.txt"))
+#resvisu <- clusvis(log(cathy12), prop = colMeans(cathy12))
+#par(mfrow=c(2,2), mar=c(4,4,2,2), mgp=c(2,1,0))
+#plotDensityClusVisu(resvisu, positionlegend = NULL)
+#plotDensityClusVisu(resvisu, add.obs = TRUE, positionlegend = NULL)
+#plotPCA(cathy12)
+#```
+#
+### Pima indian diabete
+#
+#[Source.](https://gist.github.com/ktisha/c21e73a1bd1700294ef790c56c8aec1f)
+#
+#```{r, results="show", include=TRUE, echo=TRUE}
+#load("data/pimaData.rda")
+#for (i in 3:5)
+#{
+# print(paste("Resultats en", i, "classes"))
+# grlplot(x, i)
+#}
+#```
+#
+### Breast cancer
+#
+#[Source.](http://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+\%28diagnostic\%29)
+#
+#```{r, results="show", include=TRUE, echo=TRUE}
+#load("data/wdbc.rda")
+#for (i in 3:5)
+#{
+# print(paste("Resultats en", i, "classes"))
+# grlplot(x, i)
+#}
+#```
+#
+### House-votes
+#
+#```{r, results="show", include=TRUE, echo=TRUE}
+#load("data/house-votes.rda")
+#for (i in 3:5)
+#{
+# print(paste("Resultats en", i, "classes"))
+# grlplot(x, i)
+#}
+#```