This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
neuroimagen:bioface_atn [2021/08/24 14:23] osotolongo [Naive Bayes] |
neuroimagen:bioface_atn [2021/09/12 10:23] (current) osotolongo [Métodos no lineales] |
||
---|---|---|---|
Line 42: | Line 42: | ||
| {{ : | | {{ : | ||
+ | |||
+ | ===== Otras ROI en ADNI DB ===== | ||
+ | |||
+ | < | ||
+ | | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | ucsfvol$ICV <- ucsfvol$ST10CV | ||
+ | ucsfvol$Hippocampus <- (ucsfvol$ST29SV + ucsfvol$ST88SV) | ||
+ | ucsfvol$Entorhinal <- (ucsfvol$ST24CV + ucsfvol$ST83CV) | ||
+ | ucsfvol$Fusiform <- (ucsfvol$ST26CV + ucsfvol$ST85CV) | ||
+ | ucsfvol$MidTemp <- (ucsfvol$ST40CV + ucsfvol$ST99CV) | ||
+ | ucsfvol$Ventricles <- (ucsfvol$ST30SV + ucsfvol$ST37SV + | ||
+ | ucsfvol$ST89SV + ucsfvol$ST96SV) | ||
+ | ucsfvol$WholeBrain <- apply(ucsfvol[, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | Usando el diccionario en [[http:// | ||
+ | |||
+ | < | ||
+ | Fusiform = rh.fusiform.GrayVol + lh.fusiform.GrayVol | ||
+ | MidTemp = rh.middletemporal.GrayVol + lh.middletemporal.GrayVol | ||
+ | </ | ||
+ | |||
+ | y entonces, | ||
+ | |||
+ | < | ||
+ | pop$ND = ifelse(pop$DX == " | ||
+ | xt <- pop[, c(" | ||
+ | </ | ||
===== Naive Bayes ===== | ===== Naive Bayes ===== | ||
Line 48: | Line 86: | ||
< | < | ||
> library(" | > library(" | ||
- | > library(" | + | > library(" |
> library(" | > library(" | ||
> library(" | > library(" | ||
Line 113: | Line 151: | ||
> base$Hippocampus = base$Left.Hippocampus + base$Right.Hippocampus | > base$Hippocampus = base$Left.Hippocampus + base$Right.Hippocampus | ||
> base$Entorhinal = base$lh.entorhinal.GrayVol + base$rh.entorhinal.GrayVol | > base$Entorhinal = base$lh.entorhinal.GrayVol + base$rh.entorhinal.GrayVol | ||
- | > base$Ventricles | + | > base$Ventricles |
> base$ICV = base$eTIV | > base$ICV = base$eTIV | ||
Line 124: | Line 162: | ||
> base$ND <- predict(classifier_cl, | > base$ND <- predict(classifier_cl, | ||
</ | </ | ||
+ | |||
+ | A ver como queda, | ||
+ | |||
+ | < | ||
+ | > plot(base$AGE, | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | **Nice!** | ||
+ | |||
+ | ===== What we got so far ===== | ||
+ | |||
+ | A partir de la base de datos de ADNI, tomo los sujetos diagnosticados como // | ||
+ | |||
+ | < | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | pop <- adnimerge[adnimerge$VISCODE==" | ||
+ | pop$ND = as.factor(ifelse(pop$DX == " | ||
+ | xt <- pop[, c(" | ||
+ | </ | ||
+ | |||
+ | Con estos datos, entreno el clasificador, | ||
+ | |||
+ | < | ||
+ | classifier_cl <- naiveBayes(ND ~ ., data = xt) | ||
+ | </ | ||
+ | |||
+ | Ahora, tomo un proyecto y reuno los datos de segmentacion y demograficos. No es neceario todo pero la edad y la segmentacion basica si. Esto puede cambiar de proyeto en proyecto pero es mas o menos asi, (lo repito por tenerlo todo junto) | ||
+ | |||
+ | <code bash> | ||
+ | xnat_pullfs.pl -s aseg -x bioface19 -o bf_base_aseg.csv | ||
+ | xnat_pullfs.pl -s aparc -x bioface19 -o bf_base_aparc.csv | ||
+ | join -t, bf_base_aseg.csv bf_base_aparc.csv > bf_base.csv | ||
+ | awk -F"," | ||
+ | join -t, bf_base.csv bf_age.csv > bf_data.csv | ||
+ | </ | ||
+ | |||
+ | Cargo estos datos y construyo las variables identicas a la de los datos de ADNIMERGE. | ||
+ | |||
+ | < | ||
+ | setwd("/ | ||
+ | base <- read.csv(" | ||
+ | base$Hippocampus = base$Left.Hippocampus + base$Right.Hippocampus | ||
+ | base$Entorhinal = base$lh.entorhinal.GrayVol + base$rh.entorhinal.GrayVol | ||
+ | base$Ventricles <- base$Left.Inf.Lat.Vent + base$Right.Inf.Lat.Vent + base$Left.Lateral.Ventricle + base$Right.Lateral.Ventricle | ||
+ | base$MidTemp = base$lh.middletemporal.GrayVol + base$rh.middletemporal.GrayVol | ||
+ | base$ICV = base$eTIV | ||
+ | </ | ||
+ | |||
+ | Ahora puedo calcular el valor de //(N)//, | ||
+ | |||
+ | < | ||
+ | base$ND <- predict(classifier_cl, | ||
+ | </ | ||
+ | |||
+ | o la probabilidad de que exista neurodegeneración | ||
+ | |||
+ | < | ||
+ | base$post <- predict(classifier_cl, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ^ Clasificación ^ Probabilidades de N+ ^ | ||
+ | | {{ : | ||
+ | |||
+ | Y esto voy a hacerlo para FACEHBI también para compararlo, | ||
+ | |||
+ | < | ||
+ | setwd("/ | ||
+ | read.csv(" | ||
+ | face$Hippocampus = face$Left.Hippocampus + face$Right.Hippocampus | ||
+ | face$Entorhinal = face$lh.entorhinal.GrayVol + face$rh.entorhinal.GrayVol | ||
+ | face$Ventricles <- face$Left.Inf.Lat.Vent + face$Right.Inf.Lat.Vent + face$Left.Lateral.Ventricle + face$Right.Lateral.Ventricle | ||
+ | face$MidTemp = face$lh.middletemporal.GrayVol + face$rh.middletemporal.GrayVol | ||
+ | face$ICV = face$eTIV | ||
+ | face$ND <- predict(classifier_cl, | ||
+ | face$post <- predict(classifier_cl, | ||
+ | </ | ||
+ | |||
+ | ^ Clasificación ^ Probabilidades de N+ ^ | ||
+ | | {{ : | ||
+ | |||
+ | ==== Métodos no lineales ==== | ||
+ | |||
+ | Vamos a intentar con métodos no lineales. Ojo, estos métodos no tienen interpretación probabilistica. Son construcciones matemáticas que funcionan. | ||
+ | |||
+ | === random Forest === | ||
+ | |||
+ | ** BIOFACE ** | ||
+ | < | ||
+ | rf_cl <- randomForest(ND ~ ., data = xt, na.action = na.omit) | ||
+ | base$ND <- predict(rf_cl, | ||
+ | base$post <- predict(rf_cl, | ||
+ | plot(base$AGE, | ||
+ | hist(base$post[, | ||
+ | </ | ||
+ | |||
+ | ^ Clasificación ^ Probabilidades de N+ ^ | ||
+ | | {{ : | ||
+ | |||
+ | **FACEHBI** | ||
+ | |||
+ | < | ||
+ | face$ND <- predict(rf_cl, | ||
+ | face$post <- predict(rf_cl, | ||
+ | plot(face$AGE, | ||
+ | hist(face$post[, | ||
+ | </ | ||
+ | |||
+ | ^ Clasificación ^ Probabilidades de N+ ^ | ||
+ | | {{ : | ||
+ | |||
+ | === support-vector machine === | ||
+ | |||
+ | **BIOFACE** | ||
+ | |||
+ | < | ||
+ | svm_cl <- svm(ND ~ ., data = xt, na.action = na.omit) | ||
+ | base$ND <- predict(svm_cl, | ||
+ | plot(base$AGE, | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ** FACEHBI ** | ||
+ | |||
+ | < | ||
+ | face$ND <- predict(svm_cl, | ||
+ | plot(face$AGE, | ||
+ | </ | ||
+ | |||
+ | {{ : |