de la merde
This commit is contained in:
parent
3c8d37358b
commit
9a1658886d
1 changed files with 47 additions and 69 deletions
116
Projet.Rmd
116
Projet.Rmd
|
@ -24,6 +24,7 @@ library(klaR)
|
||||||
```
|
```
|
||||||
|
|
||||||
```{r}
|
```{r}
|
||||||
|
set.seed(1234)
|
||||||
T = read.table("DataProjet3MIC-2425.txt",header=TRUE,sep=";")
|
T = read.table("DataProjet3MIC-2425.txt",header=TRUE,sep=";")
|
||||||
T$ExpT1 = as.factor(T$ExpT1)
|
T$ExpT1 = as.factor(T$ExpT1)
|
||||||
T$ExpT2 = as.factor(T$ExpT2)
|
T$ExpT2 = as.factor(T$ExpT2)
|
||||||
|
@ -151,7 +152,7 @@ ggplot(melt(T[19:36]),aes(x=variable,y=value))+
|
||||||
geom_boxplot() + theme(axis.text.x = element_text(angle=90, vjust = 0.5, hjust = 1))
|
geom_boxplot() + theme(axis.text.x = element_text(angle=90, vjust = 0.5, hjust = 1))
|
||||||
```
|
```
|
||||||
|
|
||||||
On voit que même sans réduire les données, chaque variable s'exprime environ avec la même intensité.
|
On voit que même sans réduire les données, chaque variable s'exprime environ avec la même intensité donc pas besoin de centrer réduire lors de l'ACP
|
||||||
|
|
||||||
## Boxplots par paire de variables (qualitative,quantitative)
|
## Boxplots par paire de variables (qualitative,quantitative)
|
||||||
|
|
||||||
|
@ -285,7 +286,7 @@ res_pca<-PCA(donnees_transposees,scale.unit=TRUE,graph=FALSE)
|
||||||
res_pca$eig
|
res_pca$eig
|
||||||
fviz_eig(res_pca,title="Participation des chaque valeur propre de la matrice de correlation à l'intertie totale des données")
|
fviz_eig(res_pca,title="Participation des chaque valeur propre de la matrice de correlation à l'intertie totale des données")
|
||||||
```
|
```
|
||||||
Ce graphique représente les valeurs propres de la matrice de corrélation du jeu de données centré réduites. L'inertie totale des données étant la somme des valeurs propres ( qui elles sont les inerties axiale associées à l'axe de vecteur directeur un vecteur propre associé ), chaque valeur propre est donc une fraction de l'inertie totale.
|
Ce graphique représente les valeurs propres de la matrice de corrélation du jeu de données. L'inertie totale des données étant la somme des valeurs propres ( qui elles sont les inerties axiale associées à l'axe de vecteur directeur un vecteur propre associé ), chaque valeur propre est donc une fraction de l'inertie totale.
|
||||||
On voit qu'on dépasse 80% de l'inertie totale des points rien qu'avec les deux premieres valeurs propres, on en prend donc les vecteurs propres associés respectivement à chacune de ces deux valeurs propres comme axes principaux de l'analyse.
|
On voit qu'on dépasse 80% de l'inertie totale des points rien qu'avec les deux premieres valeurs propres, on en prend donc les vecteurs propres associés respectivement à chacune de ces deux valeurs propres comme axes principaux de l'analyse.
|
||||||
|
|
||||||
|
|
||||||
|
@ -331,24 +332,6 @@ En regardant les individus, on observe que plus l'heure est tardive, plus ils te
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### afin de visualiser les corrélations des variables intiales avec toutes les méta-variables (pas trs utile on a déjà le cercle)
|
|
||||||
```{r fig.height=18}
|
|
||||||
# que 50 gènes sinon c'est le bordel
|
|
||||||
corrplot(res_pca$var$cor[1:50,],method="ellipse", type="lower", bg = "lightgrey")
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
MAIS C'EST INBUVABLE
|
|
||||||
### plus ou moins inutile ici de regarder d'autres plans, sera utile dans l'autre ACP
|
|
||||||
|
|
||||||
```{r}
|
|
||||||
fviz_pca_ind(res_pca,axes = c(1,3),geom=c("point"))
|
|
||||||
fviz_pca_ind(res_pca,axes = c(1,4),geom=c("point"))
|
|
||||||
fviz_pca_ind(res_pca,axes = c(1,5),geom=c("point"))
|
|
||||||
```
|
|
||||||
## Clustering
|
## Clustering
|
||||||
|
|
||||||
|
|
||||||
|
@ -357,7 +340,7 @@ fviz_pca_ind(res_pca,axes = c(1,5),geom=c("point"))
|
||||||
|
|
||||||
```{r,fig.cap="Visualisation de l'inertie intra-classe en fonction du nombre de classes demandées pour le clustering"}
|
```{r,fig.cap="Visualisation de l'inertie intra-classe en fonction du nombre de classes demandées pour le clustering"}
|
||||||
#centrage et réduction des données
|
#centrage et réduction des données
|
||||||
s = scale(donnees_transposees)
|
s = donnees_transposees
|
||||||
|
|
||||||
Kmax<-15
|
Kmax<-15
|
||||||
reskmeanscl<-matrix(0,nrow=nrow(s),ncol=Kmax-1)
|
reskmeanscl<-matrix(0,nrow=nrow(s),ncol=Kmax-1)
|
||||||
|
@ -378,7 +361,7 @@ ggplot(df,aes(x=K,y=Iintra))+
|
||||||
nn pense dénoter un coude dans la courbe d'inertie intraclasse aux alentours de 4 clusters
|
nn pense dénoter un coude dans la courbe d'inertie intraclasse aux alentours de 4 clusters
|
||||||
|
|
||||||
|
|
||||||
```{r,fig.cap="Visualisation du critère de Silhouette en fonction du nombre de classes demandées pour le clustering"}
|
```{r,fig.cap="Visualisation du critère de Silhouette et de Calinski-Harabasz en fonction du nombre de classes demandées pour le clustering"}
|
||||||
Silhou<-NULL
|
Silhou<-NULL
|
||||||
for (k in 2:Kmax){
|
for (k in 2:Kmax){
|
||||||
aux<-silhouette(reskmeanscl[,k-1], daisy(s))
|
aux<-silhouette(reskmeanscl[,k-1], daisy(s))
|
||||||
|
@ -390,49 +373,43 @@ ggplot(df,aes(x=K,y=Silhouette))+
|
||||||
geom_point()+
|
geom_point()+
|
||||||
geom_line()+theme(legend.position = "bottom")
|
geom_line()+theme(legend.position = "bottom")
|
||||||
|
|
||||||
aux<-silhouette(reskmeanscl[,3-1], daisy(s))
|
CH<-NULL
|
||||||
fviz_silhouette(aux)+
|
Kmax<-20
|
||||||
theme(plot.title = element_text(size =9))
|
for (k in 2:Kmax){
|
||||||
rm(df,Silhou,aux)
|
CH<-c(CH,index.G1(x=s , cl= kmeans(s,k)$cluster))
|
||||||
|
}
|
||||||
|
daux<-data.frame(NbClust=2:Kmax,CH=CH)
|
||||||
|
ggplot(daux,aes(x=NbClust,y=CH))+
|
||||||
|
geom_line()+
|
||||||
|
geom_point()
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Silhouette et l'indice de Calinski-Harabasz ont un pic à 2
|
||||||
|
|
||||||
|
|
||||||
Silhouette fait un pic à 5 et pas 4 :/
|
|
||||||
|
|
||||||
### visualisation du clustering
|
### visualisation du clustering
|
||||||
```{r,fig.cap="Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2"}
|
```{r,fig.cap="Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2"}
|
||||||
#graphes des clusters
|
#graphes des clusters
|
||||||
res_kmeans = kmeans(s,4)
|
res_kmeans = kmeans(s,2)
|
||||||
fviz_cluster(res_kmeans,data=donnees_transposees,
|
fviz_cluster(res_kmeans,data=donnees_transposees,
|
||||||
ellipse.type="norm",labelsize=8,
|
ellipse.type="norm",labelsize=8,
|
||||||
geom=c("point"))+ggtitle("Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2")
|
geom=c("point"))+ggtitle("Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2")
|
||||||
|
|
||||||
# pour corréler à des variables qualitatives mais yen a pas la
|
|
||||||
|
|
||||||
#adjustedRandIndex(T$ExpT1,res_kmeans$cluster)
|
# on choisis 2 clusters
|
||||||
#adjustedRandIndex(T$ExpT2,res_kmeans$cluster)
|
aux<-silhouette(reskmeanscl[,2-1], daisy(s))
|
||||||
#adjustedRandIndex(T$ExpT3,res_kmeans$cluster)
|
fviz_silhouette(aux)+
|
||||||
|
theme(plot.title = element_text(size =9))
|
||||||
#clust<-paste("Cl-K",res_kmeans$cluster,sep="")
|
rm(df,Silhou,aux)
|
||||||
#Tab<-melt(table(clust,donnees_transposees[,1]))
|
|
||||||
#ggplot(Tab,aes(y=value,axis1=clust,axis2=Var2))+
|
|
||||||
# geom_alluvium(aes(fill=clust))+
|
|
||||||
# geom_stratum(width = 1/12)+
|
|
||||||
# geom_text(stat = "stratum", aes(label = after_stat(stratum)))+
|
|
||||||
# theme(legend.position = "none")
|
|
||||||
#chordDiagram(table(clust,donnees_transposees[,2]))
|
|
||||||
```
|
```
|
||||||
On remaque bien 3 clusters
|
On remaque bien 2 clusters
|
||||||
|
|
||||||
### PAM
|
### PAM
|
||||||
|
|
||||||
```{r, fig.cap="Visualisation des clusters générés par la méthode PAM dnas le plan factoriel 1,2"}
|
```{r, fig.cap="Visualisation des clusters générés par la méthode PAM dnas le plan factoriel 1,2"}
|
||||||
res = pam(s,4,metric="euclidean")
|
res = pam(s,2,metric="euclidean")
|
||||||
fviz_cluster(res,data=donnees_transposees,
|
fviz_cluster(res,data=donnees_transposees,
|
||||||
ellipse.type="norm",labelsize=8,
|
ellipse.type="norm",labelsize=8,
|
||||||
geom=c("point"))+ggtitle("Visualisation des clusters générés par la méthode PAM dnas le plan factoriel 1,2")
|
geom=c("point"))+ggtitle("Visualisation des clusters générés par la méthode PAM dnas le plan factoriel 1,2")
|
||||||
|
@ -443,9 +420,25 @@ fviz_cluster(res,data=donnees_transposees,
|
||||||
### clustering CAH
|
### clustering CAH
|
||||||
```{r, fig.width=9, fig.cap="Dendogramme du clustering de l'ACP des variables Tt en tant qu'individus, obtenu par méthode CAH"}
|
```{r, fig.width=9, fig.cap="Dendogramme du clustering de l'ACP des variables Tt en tant qu'individus, obtenu par méthode CAH"}
|
||||||
|
|
||||||
dx<-dist(donnees_transposees,method="euclidian")
|
dx<-dist(donnees_transposees)
|
||||||
hward<-hclust(dx,method = "ward.D2")
|
hward<-hclust(dx,method = "ward.D2")
|
||||||
|
|
||||||
|
CH<-NULL
|
||||||
|
Kmax<-20
|
||||||
|
for (k in 2:Kmax){
|
||||||
|
CH<-c(CH,index.G1(dx, cl= cutree(hward,k)))
|
||||||
|
}
|
||||||
|
daux<-data.frame(NbClust=2:Kmax,CH=CH)
|
||||||
|
ggplot(daux,aes(x=NbClust,y=CH))+
|
||||||
|
geom_line()+
|
||||||
|
geom_point()
|
||||||
|
|
||||||
|
ClustCH<-cutree(hward,k=6)
|
||||||
|
fviz_dend(hward,k=4,show_labels=FALSE)
|
||||||
|
fviz_pca_ind(res, habillage = as.factor(ClustCH), geom = c("point"))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fviz_dend(hward,k=4,
|
fviz_dend(hward,k=4,
|
||||||
show_labels = TRUE,
|
show_labels = TRUE,
|
||||||
|
@ -532,7 +525,7 @@ fviz_pca_ind(res_pca2,habillage=21,geom=c("point"))
|
||||||
|
|
||||||
```{r,fig.cap="Visualisation de l'inertie intra-classe en fonction du nombre de classes demandées pour le clustering"}
|
```{r,fig.cap="Visualisation de l'inertie intra-classe en fonction du nombre de classes demandées pour le clustering"}
|
||||||
#centrage et réduction des données
|
#centrage et réduction des données
|
||||||
s_2 = scale(DataExpMoy[-c(19:21)])
|
s_2 = DataExpMoy[-c(19:21)]
|
||||||
|
|
||||||
Kmax<-15
|
Kmax<-15
|
||||||
reskmeanscl_2<-matrix(0,nrow=nrow(s_2),ncol=Kmax-1)
|
reskmeanscl_2<-matrix(0,nrow=nrow(s_2),ncol=Kmax-1)
|
||||||
|
@ -579,6 +572,8 @@ res_kmeans_2 = kmeans(s_2,3)
|
||||||
fviz_cluster(res_kmeans_2,data=s_2,
|
fviz_cluster(res_kmeans_2,data=s_2,
|
||||||
ellipse.type="norm",labelsize=8,
|
ellipse.type="norm",labelsize=8,
|
||||||
geom=c("point"))+ggtitle("Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2")
|
geom=c("point"))+ggtitle("Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2")
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -604,26 +599,6 @@ fviz_dend(hward,k=3,
|
||||||
labels_track_height = 0.8)+ggtitle("Dendogramme du clustering de l'ACP, obtenu par méthode CAH")
|
labels_track_height = 0.8)+ggtitle("Dendogramme du clustering de l'ACP, obtenu par méthode CAH")
|
||||||
```
|
```
|
||||||
|
|
||||||
### nul de fou zinzin DBSCAN
|
|
||||||
```{r}
|
|
||||||
|
|
||||||
kNNdistplot(s_2,k=round(log(nrow(s_2))))
|
|
||||||
# on observe un coude à eps=3
|
|
||||||
|
|
||||||
# On prend les paramètres eps=3 et minPts=log(500) (environ 6) pour essayer de coller avec les demandes faites aux autres méthodes de clustering
|
|
||||||
set.seed(123) # Pour rendre les résultats reproductibles
|
|
||||||
dbscan_res = dbscan::dbscan(s_2, eps = 2, minPts = round(log(nrow(s_2))))
|
|
||||||
|
|
||||||
# Ajouter les clusters résultants à DataExpMoy
|
|
||||||
#DataExpMoy$DBSCAN_Cluster <- as.factor(dbscan_res$cluster) # Les clusters DBSCAN
|
|
||||||
|
|
||||||
# Visualiser les clusters
|
|
||||||
fviz_cluster(dbscan_res, data = s_2,
|
|
||||||
geom = "point", ellipse = FALSE, # Pas d'ellipse pour DBSCAN
|
|
||||||
show.clust.cent = FALSE, # Pas de centres pour DBSCAN
|
|
||||||
palette = "jco") +
|
|
||||||
ggtitle("Visualisation des clusters générés par DBSCAN")
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Evolution de l'expression des genes en fonction de leur traitement et cluster :
|
## Evolution de l'expression des genes en fonction de leur traitement et cluster :
|
||||||
|
@ -665,7 +640,7 @@ ggplot(data_long, aes(x = Temps, y = Expression, group = GeneID, color = Cluster
|
||||||
Comme ce sont des données qualitatives, on doit utiliser des méthodes alternatives de clustering comme les kmodes ou les kmeans mais sur les coordonnées de points projetés dans le plan d'une ACM
|
Comme ce sont des données qualitatives, on doit utiliser des méthodes alternatives de clustering comme les kmodes ou les kmeans mais sur les coordonnées de points projetés dans le plan d'une ACM
|
||||||
### K-modes
|
### K-modes
|
||||||
```{r,fig.cap=""}
|
```{r,fig.cap=""}
|
||||||
MatriceExp = matrix(nrow = nrow(T),ncol=3)
|
MatriceExp = T[,c(-1,-2,-3)]
|
||||||
rownames(MatriceExp) = rownames(T)
|
rownames(MatriceExp) = rownames(T)
|
||||||
colnames(MatriceExp) = c("ExpT1","ExpT2","ExpT3")
|
colnames(MatriceExp) = c("ExpT1","ExpT2","ExpT3")
|
||||||
MatriceExp = as.data.frame(MatriceExp)
|
MatriceExp = as.data.frame(MatriceExp)
|
||||||
|
@ -699,6 +674,9 @@ J'ai absolument rien compris à ce qu'il se passe là, il y a beaucoup moins de
|
||||||
|
|
||||||
|
|
||||||
# TODO :
|
# TODO :
|
||||||
|
- refaire sans centrer-réduire
|
||||||
|
- interpréter par rapport aux méta-variable
|
||||||
|
-
|
||||||
- présenter chaque méthode/algo et pourquoi on l'utilise avant le code
|
- présenter chaque méthode/algo et pourquoi on l'utilise avant le code
|
||||||
- analyser la seconde et troisième acp et les clustering qu'on en fait
|
- analyser la seconde et troisième acp et les clustering qu'on en fait
|
||||||
- refaire l'analyse de la première acp
|
- refaire l'analyse de la première acp
|
||||||
|
|
Loading…
Reference in a new issue