Showing posts with label r. Show all posts
Showing posts with label r. Show all posts

Thursday, May 14, 2015

Migrando antes que me cierren el servidor en spark :(

Estan un poco abandonados...
al tratar de loguearme en el server me detuvo con este mensajito:
:O

New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*** /dev/xvda1 will be checked for errors at next reboot ***
*** System restart required ***
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.2.0-54-virtual x86_64)
 * Documentation:  https://help.ubuntu.com/
  System information as of Thu May 14 14:32:29 UTC 2015
  System load:    0.93                 Processes:           249
  Usage of /home: 19.6% of 1023.50GB   Users logged in:     1
  Memory usage:   52%                  IP address for eth0: 10.252.95.77
  Swap usage:     0%
  Graph this data and manage this system at:
    https://landscape.canonical.com/
  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud
  Use Juju to deploy your cloud instances and workloads:
    https://juju.ubuntu.com/#cloud-precise
116 packages can be updated.
95 updates are security updates.
New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*** /dev/xvda1 will be checked for errors at next reboot ***
*** System restart required ***
groups: cannot find name for group ID 1484

y Bueno el codigo lo tenia en github ( j3nnn1.github.io) así que fue ese el que implemente en la aplicación shiny:



> install.packages('shinyapps')
Installing package into ‘/home/j3nnn1/R/x86_64-unknown-linux-gnu-library/3.1’
(as ‘lib’ is unspecified)
--- Please select a CRAN mirror for use in this session ---
Mensajes de aviso perdidos
package ‘shinyapps’ is not available (for R version 3.1.3)

ouh nou... es un paquete propio de rstudio y por eso no esta en los repositorios de CRAN.

Desde la consola de R... hacer esto:


Esta buenisimo el tutorial: lo mejor es instalarlo desde el repositorio de github:

install.packages('devtools')

devtools::install_github('rstudio/shinyapps')
shinyapps::setAccountInfo(name='j3nnn1', token='80AF9kk1C50EB9014D3F92A74235B371', secret='')
library(shinyapps)
shinyapps::deployApp('~/git/homework/tp_vi/eph_ar')
shinyapps::deployApp('~/git/homework/tp_vi/eph_ar')
Preparing to deploy application...Update application currently deployed at
https://j3nnn1.shinyapps.io/eph_ar? [Y/n] Y
DONE
Uploading application bundle...DONE
Deploying application: 42672...
Waiting for task: 33658257
  building: Parsing manifest
  building: Fetching packages
  building: Installing packages
  building: Installing files
  building: Pushing image: 182367
  deploying: Starting instances
  terminating: Stopping old instances
Application successfully deployed to https://j3nnn1.shinyapps.io/eph_ar

Y eso es todo! :D genial pense que sería más difícil :D

bueno queda otra tarea pendiente:

migrar todo el css y html, como esta hecho con bootstrap 2 y cuando recién instalas shinny usan bootstrap 3 se ve muy rara la aplicación.

:-/

Saturday, June 8, 2013

python, virtualenv y no hay problema!




Instalar virtualenv.

pip install virtualenv

por el gestor de paquetes.
python2-virtualenv-clone
python2-virtualenv

Creando un entorno virtual.

mkdir ~/virtualenvs/blog/
virtualenv ~/virtualenvs/blog/ --no-site-packages -p /usr/bin/python2virtualenv --no-site-packages nombreEntorno : Esta opcion hace que el entorno virtual se instale sin tomar en cuenta los paquetes del sistema operativo.

virtualenv --python=python3.1 nombreEntorno: Para que use un python específico.

Listar los ambientes virtualenvs.

   Porque menciono esto ya que la costumbre de usar rvm o perlbrew es poder listar las diferentes versiones del lenguaje que ya tengo instalada, por lo que no existe una única forma de hacer esto, ya que esto NO te instala diferentes versiones de python en tu SO, sino crea entornos virtuales para cada aplicación haciendo más limpia su implementación, por ejemplo tengo en mi SO dos versiones de python, puedo instalar estas dos versiones en mi ambiente local. Lo más recomendable es hacer un directorio donde almacenar todos los entornos virtuales.
Activando el entorno virtual.

cd ~/virtualenvs/mysite.com
source bin/activate


Desactivando el entorno virtual (Dejar de usar el python local). 

deactive 

Como funciona un entorno virtual.
Cuando uno crea un entorno, dentro del mismo se crean tres carpetas:

bin: cuando uno tiene el entorno activado, y ejecuta un comando como python, pip o easy_install, se ejecuta alguno de los binarios que se encuentran en esa carpeta, en vez de ejecutar los del sistema.
include: es simplemente un link al a los archivos de la instalación de Python.

Un link a algunos archivos de Python. En este caso a los .py
Una carpeta, site-packages, que es donde se instalan los paquetes cuando uno usa pip o easy_install

lib: esta es otra carpeta importante. Al igual que include tiene una carpeta llamada python pero a diferencia de include, esta no es una link a la carpeta de Python. La carpeta tiene dos cosas importantes:

Instalar Modulos en el entorno virtual.

pip install psycopg2

pip install numpy

pip install rpy2


Usando un wrapper para agilizar la utilización del entorno virtual.

usar: http://virtualenvwrapper.readthedocs.org/en/latest/


Servidor que contiene binarios no oficiales para python y windows

http://www.lfd.uci.edu/~gohlke/pythonlibs/


Referencias de:
 

Un tutorial genial para instalar virtualenv y como funciona:
https://wiki.archlinux.org/index.php/Python_VirtualEnv

referencia al titulo: http://www.youtube.com/watch?v=21fRA1VrLPo :)

adorable  alf

Sunday, May 12, 2013

predicciones con árboles.


árboles de decisión, son muy usados para establecer modelos predictivos,en base a hechos del pasado.

Ejecución de árboles en R.

que algoritmo utiliza R,

library(tree)
library(datasets)
iris.tr = tree(Species ~ ., iris)
iris.tr
> summary(iris.tr)

> plot(iris.tr)
> text(iris.tr)
> misclass.tree(iris.tr)
> misclass.tree(iris.tr, detail=TRUE)

> library(rpart)
> data(spam7)
> attach(spam7)
> spam.tree = rpart(formula = yesno ~ crl.tot + dollar + bang)
> spam.tree = rpart(formula = yesno ~ crl.tot + dollar + bang + money + n000 + make,method="class", data=spam7)
> plot(spam.tree)
> text(spam.tree)
printcp(spam.tree)
> spam.tree = rpart(formula = yesno ~ crl.tot + dollar + bang + money + n000 + make,method="class", data=spam7, cp=0.001)
> plotcp(spam.tree)
> spam7b.tree = prune(spam.tree, cp = spam.tree$cptable[which.min(spam.tree$cptable[,"xerror"]), "CP"])
> plot(spam7b.tree)
> text(spam7b.tree)



Con Weka desde R
> library("RWeka")
tree = make> tree = make_Weka_classifier("weka/classifiers/trees/J48", c("bar", "Weka_tree"))
> print(tree)
> WOW(tree)
> fm = tree(yesno ~ crl.tot + dollar + bang + money + n000 + make, data=spam7, control=Weka_control( S=TRUE, M=150))
> fm
table( observed= spam7$yesno, predicted = fitted(fm))
fm = tree(yesno ~ crl.tot + dollar + bang + money + n000 + make, data=spam7, control=Weka_control( S=TRUE, M=150))
library(party)
plot(fm)


Thursday, February 28, 2013

Twitter permite bajar todos tus tweets

      Luego que twitter permitiera descargar todos tus tweets,  hice una nube de palabras con la librería de R y la librería tm. En general sólo necesitas 2, pero con el colorcito son 3:

library("tm")
library("wordcloud")
library("RColorBrewer")

      Sin analisis temporal, paso todos los tweets a un archivo (bag of words):
aproximadamente 22000 palabras diferentes desde el 2009 hasta ahora en
8999 tweets. Sí, lo sé, tweet-a-holic en rehabilitación (hay peores :P).

      La buena Noticias es si han cambiado los temas menos "Yoiismo"  (el arte de hablar de cada actividad que realizá uno mismo), a mencionar enlaces y opiniones de  linux, datamining, R, y varios lenguajes de programación.

cut -d, -f8 tweets.csv  > corpustweets.txt

Luego leo este archivo desde R.
en mi sistema de archivo existe la carpeta tweets/corpus/tweets.txt

txt =  DirSource('C:\\tweets\\corpus')    //Esto debe ser un directorio.
tweets.corpus = Corpus(txt)
                //extensión del tipo de archivo.

Luego hacemos la matriz de documentos y la conversión a una matriz ordinaria (matrix)
Filtrado de signos de puntuación, llevando a minúscula y eliminando stopwords (palabras que no añaden semantica a la oración, como artículos y conjunciones: el , la, otros, y, etc).
 tweets.corpus <- tm_map(tweets.corpus, removePunctuation)  
 tweets.corpus <- tm_map(tweets.corpus, tolower)  
 tweets.corpus <- tm_map(tweets.corpus, function(x) removeWords(x, stopwords("spanish")))  
 tweets.corpus <- tm_map(tweets.corpus, function(x) removeWords(x, stopwords("english")))  
 wordcloud(d$word,d$freq, scale=c(8,.3),min.freq=2,max.words=Inf, random.order=FALSE, rot.per=.15, colors=pal2, ordered.colors=T, vfont=c("sans serif","gothic english","plain"))  


//otras funciones que realizan similares 
commonality.cloud(m, comonality.measure=min) 
comparison.cloud(m)

Más info en: 
 
http://cran.r-project.org/web/packages/wordcloud/wordcloud.pdf

script R:  
 
https://github.com/j3nnn1/tools/blob/master/twitter/wordcloudTwitterText.r


En otro post revisaré un poco reglas de asociación, clustering de palabras, 

correlaciones, un ranking de mis seguidores, y luego un poco de grafos..

Thursday, November 1, 2012

Renderizado de los gráficos en R es lento.


Ayer actualicé mi máquina, y bueno pasó  que cada vez que realizaba una gráfica no se actualizaba el gráfico en la ventana de R, supongo que por alguna actualización de Xorg o el driver, supongo que alguna configuración habrá cambiado, por lo que el renderizado era lento, muy muy lento.

preguntando al tío Google, existe una forma de modificar las opciones de las X para R, siempre y cuando se tenga acceso al servidor  de las X.

leí que esta opción es más rápida:

X11.options(type="Xlib")

y esta opción no esta disponible si no se tiene la librería. Tiene más caracteristicas pero no es tan rápida como Xlib.


X11.options(type="cairo")

Para más información:
http://stat.ethz.ch/R-manual/R-patched/library/grDevices/html/x11.html

Monday, October 1, 2012

Pasar una matriz a un vector.


 
Una matrix de 10x10 => resultará un vector de 100 elementos.
 
mx <- code="code">matrix(rnorm(100,1:100),10,10)
vec <- code="code">c(mx)
 
En mi caso estoy usando una matriz de distancia, para obtener la distribución de las distancias y ver en que punto de corte se considera una estrella perteneciente a Hyades o no. Esto lo subiré después y más ordenado. La imagen es tomada de: http://hubblesite.org/newscenter/archive/releases/2012/37/image/a/format/large_web/

Wednesday, August 15, 2012

Formatos para reglas de asociación.

Formatos para obtener reglas de asociación.
Single:

IDtransaccion1, Producto1
IDtransaccion1, Producto2
IDtransaccion1, Producto3
IDtransaccion1, Producto4

Basket:

IDtransaccion1, Producto1, Producto2, Producto3, Producto4
IDtransaccion2, Producto1, Producto6, 
IDtransaccion3, Producto1, Producto2, Producto3, Producto4, Producto5,  Producto6

Basket no difuso:

IDtransaccion1, Producto1, Producto2, Producto3, Producto4
IDtransaccion2, Producto1, Producto2, Producto3, Producto4
IDtransaccion3, Producto1, Producto2, Producto3, Producto4
IDtransaccion4, Producto1, Producto2, Producto3, Producto4
IDtransaccion5, Producto1, Producto2, Producto3, Producto4

En Modeler, Transacional es el formato single. Y Tabular es el formato basket no difuso, es decir sus columnas siempre son iguales , y sus valores tienen ausencia o presencia de productos.

weka puede recibir un archivo csv, sin embargo requiere ser transformado a su formato natico arff, y recibe el formato basket difuso y no difuso.

En orange, recibe el formato basket, difuso y no difuso, pero separado con tabs.

R lee formato basket (difuso o no) y single.

La tetera me recuerda a kettle, que sirve para organizar, y preprocesar la data antes de ejecutar cualquier algoritmo.