Sei sulla pagina 1di 28

Interfaces de programacin de

aplicaciones para minera de


datos
CI-2352 Intr. a la minera de datos
Prof. Braulio Jos Solano o!as
"CCI# $C
Software instalado para el curso

apid%iner Communit& "dition

'ttp())rapid-i.com)content)*ie+),-,),./)

0e1a

'ttp())+++.cs.+ai1ato.ac.n2)ml)+e1a)

34I%"

'ttp())+++.1nime.org)

5SB Prolog

e6uiere compilacin( 'ttp())7s8.sourceforge.net).


0e1a

0e1a es una coleccin de algoritmos para


tareas de minera de datos. 9os algoritmos
pueden ser aplicados por medio de una interfa2
gr:fico o llamados desde cdigo Ja*a propio.
0e1a contiene 'erramientas para pre-
procesamiento de datos# clasificacin#
regresin# agrupamiento# reglas de asociacin
& *isuali2acin. ;am8in es apropiado para
desarrollar nue*os algoritmos.

0e1a es software de cdigo a8ierto li8erado


8a!o la licencia GNU General Public License.
0e1a( enlaces

P:gina de 0e1a

Ja*adoc del <PI de 0e1a

0i1i de 0e1a

Programacin con 0e1a

Clasificacin con 0e1a

<grupamiento con 0e1a


0e1a como 8i8lioteca de
funcionalidad

;odas las funciones disponi8les en los distintas


interfaces gr:ficas de 0"3<# !unto con algunas
otras no accesi8les directamente desde las
interfaces gr:ficas# pueden ser llamadas desde
cdigo Ja*a.
0e1a( clases 8:sicas

Para crear & gestionar# en memoria# los


con!untos de datos es necesario utili2ar las
clases Instances# Instance & Attribute
del pa6uete weka.core.
0e1a( clase Instances

epresentacin en memoria de un con!unto de


datos =dataset>.

?escrito por un con!unto de atri8utos =Attribute>.

Contiene un con!untos de instancias)e!emplos


=Instance> 6ue almacenan conteniendo los
*alores de sus atri8utos.

@pcionalmente uno de los atri8utos podr: estar


marcado como atri8uto clase.

en clasificacin el atri8uto clase de8e de ser de tipo


4ominal.

en prediccin numrica el atri8uto clase de8e de ser de


tipo 4umrico.
0e1a( clase Instances

Constructores & mtodos de inters(

Instances(String nombre,FastVector atributos,int capacidad)( Crea un


con!unto de datos. con el nom8re & la capacidad indicada# asign:ndole la lista de atri8utos
6ue reci8e en el FastVector.

Instances(java.io.Reader reader)( Crea un con!unto de datos & lo carga desde el


fic'ero <AA al 6ue apunta el Reader.

%ane!ar atri8utos

Buscar por posicin( Attribute attribute(int index)

Buscar por nom8re( Attribute attribute(String name)

"sta8lecer atri8uto clase( void set!ass(Attribute att), void set!assIndex(int


c!assIndex)

%ane!ar instancias

<Badir una instancia( void add(Instance instance)

ecupear instancias( Instance instance(int index)# Instance "irstInstance()#


Instance !astInstance()# #numeration enumerateInstances()# ...

"stadsticas( kt$Sma!!estVa!ue(Attribute att, int k)#


mean%r&ode(Attribute att)# num'istinctVa!ues(Attribute att)# ..

%ane!ar el con!unto de datos( de!ete()# de!ete(int index)#


randomi(e(java.uti!.Random random)# strati")(int numFo!ds)# Instances
resamp!e()# Instances testV(int numFo!ds, int numFo!d)# Instance
trainV(int numFo!ds, int numFo!d)# ...
0e1a( clase Instance

<lmacena los *alores de un dato =instancia>.

Internamente los *alores de los atri8utos de


cada instancia se representan como un *ector
de nCmeros reales =doub!e*+>#
independientemente del tipo de los atri8utos.

4ormalmente estar: asociado a un con!unto de


datos =Instances> 6ue determina el formato &
el tipo de los atri8utos cu&os *alores almacena
la instancia.
0e1a( clase Instance

Constructor & mtodos

Instance(int numAttributes)( constru&e una instancia con el nCmero de


atri8utos indicados.

set'ataset(Instances instances)( indica el con!unto de datos


=Instance> del cual esta instancia almacena *alores# descri8e el formato de la
instancia =nCmero & tipo de atri8utos>.

Attribute attribute(int index)( de*uel*e el atri8uto indicado.

Attribute c!assAttribute()( de*uel*e el atri8uto clase =si est: definido>.

doub!e c!assVa!ue()( de*uel*e el *alor almacenado en el atri8uto clase =es


el ndice de la eti6ueta de la clase>.

set!assVa!ue(String va!ue)( esta8lece el *alor del atri8uto clase.

doub!e va!ue(Attribute att), doub!e va!ue(int index)( de*uel*e


el *alor de un atri8uto numrico =o el ndice del *alor en los nominales>.

String stringVa!ue(Attribute att), String stringVa!ue(int


index)( de*uel*e el *alor de un atri8uto nominal o string.

setVa!ue(Attribute att, doub!e va!ue), setVa!ue(int


attIndex, doub!e va!ue)( esta8lece el *alor de un atri8uto 4umrico.

setVa!ue(Attribute att, String va!ue), setVa!ue(int


attIndex, String va!ue)( esta8lece el *alor de un atri8uto 4ominal o
String.
0e1a( clase Instance

"7iste una su8clase SparseInstance


orientada a almacenar *ectores de atri8utos
con muc'os *alores nulos de forma compacta.
"n las instancias SparseInstance slo se
almacenan los atri8utos =numricos o
nominales> distintos de cero.
0e1a( clase Attribute

"l <PI de 0"3< contempla cinco tipos de atri8utos.

numrico( representa un *alor de tipo real

Constructor( Attribute(String nombre)

nominal( representa un *alor tomando de un con!unto


discreto de *alores posi8les

Constructor( Attribute(String nombre, FastVector


va!ores)

eci8e un FastVector de String con las eti6uetas de los


*alores posi8les

string( representa una cadena de caracteres

Constructor( Attribute(String nombre,


(FastVector) nu!!)

fecha( representa una fec'a

relacional( representa un *alor 6ue a su *e2 estar:


estructurado en distintos atri8utos
0e1a( clase Attribute

%todos

int index()( ndice del atri8uto dentro de un


con!untos de datos =Instances>

String name()( eti6ueta del atri8uto

int numVa!ues()( nCmero de *alores posi8les


de un atri8uto 4ominal

String va!ue(int va!Index)( de*uel*e la


eti6ueta indicada de un atri8uto 4ominal

void set,eig$t(doub!e va!ue), doub!e


weig$t()( esta8lece & recupera el peso del
atri8uto
0e1a( pa6uete nCcleo

weka.core( Pa6uete con las clases e interfaces 6ue conforman la


8ase de 0"3<. "s comCn a los distintos algoritmos implementados
en 0"3<.

?efine las estructuras de datos 6ue contienen los datos a mane!ar por
los algoritmos de aprendi2a!e.

Clase Instances( encapsula un con!unto de datos & pro*ee los mtodos para
mane!arlo =creacin & copia# di*isin en su8con!untos Dentrenamiento & prue8aE#
aleatori2acin# gestin de pesos# ...>

Clase Attribute( encapsula los atri8utos 6ue definen un con!unto de datos =nom8re
de atri8uto# tipo Dnominal# numrico# stringE# *alores posi8les>.

Clase Instance( encapsula cada uno de los e!emplos indi*iduales 6ue forman un
con!unto de datos# almacenando los *alores de los respecti*os atri8utos.

Clase au7iliar FastVector( implementacin eficiente de Fector de


Ja*a.

Su8pa6uete weka.core.converters( clases au7ilares para leer &


escri8ir con!untos de datos desde distintas fuentes de datos =fic'eros
<AA# 8ases de datos# etc.>.

Su8pa6uete weka.core.neig$boursearc$( implementaciones de


algoritmos & estructuras de datos para la 8Cs6ueda eficiente de
instancias similares =GG*ecinasGG>.
0e1a( algoritmos de clasificacin

;odos los algoritmos de clasificacin 'eredan de


weka.c!assi"iers.!assi"ier & de8en de implementar los
siguientes mtodos 8:sicos(

void bui!d!assi"ier(Instances data)( entrena el clasificador


con el con!unto de entrenamiento =Instances> indicado.

doub!e c!assi")Instance(Instance instance)( clasifica la


instancia 6ue reci8e como par:metro. D"7ige 'a8er in*ocado antes a
bui!d!assi"ier()E

9a estructura de la instancia =nCmero & tipo de atri8utos> de8e coincidir con la del
o8!eto Instances usado en el entrenamiento.

"l *alor de*uelto =de tipo doub!e> indica la clase predic'a. Se corresponde con el
ndice de su eti6ueta en el FastVector asociado al atri8uto clase.

doub!e*+ distributionForInstance(Instance instance)(


clasifica la instancia & de*uel*e un *ector doub!e*+ con un
componente para cada *alor del atri8uto clase 6ue cuantifica su
pro8a8ilidad o importancia relati*a =dependiendo del mtodo de
clasificacin>. D"7ige 'a8er in*ocado antes a bui!d!assi"ier()E
0e1a( algoritmos de clasificacin

9a clase a8stracta Classifier tam8in ofrece el


mtodo !assi"ier "or-ame(String
c!assi"ier-ame, String*+ options)
6ue crea un clasificador de la clase indicada
con los par:metros 6ue se le pasan como
arreglo de String =el javadoc de cada mtodo
de clasificacin especifica el formato de las
opciones 6ue esperan>.
0e1a( pa6uete de clasificacin

weka.c!assi"iers( Pa6uete con las


implementaciones de algoritmos de
clasificacin =tanto a mtodos de clasificacin
discreta como de prediccin numrica>.

Su8-pa6uetes( weka.c!assi"iers.ba)es#
weka.c!assi"iers.ru!es#
weka.c!assi"iers.!a()#
weka.c!assi"iers.trees#
weka.c!assi"iers."unctions#
weka.c!assi"iers.meta# etc.

Clase a8stracta !assi"ier( mtodos comunes a


todos los clasificadores.
0e1a( algoritmos de agrupamiento

;odos los algoritmos de agrupamiento implementan la interfa2


weka.c!usterers.!usterer & de8en de aportar los siguientes
mtodos 8:sicos(

void bui!d!usterer(Instances data)( calcula los grupos para


el con!unto de datos de entrenamiento indicado.

int number%"!usters()( nCmero de grupos resultantes


=dependiendo del mtodo concreto se especifica antes de entrenar o se
calcula durante el entrenamiento>.

int c!usterInstance(Instance instance)( indica el grupo al


6ue pertenece la instancia pasada como argumento. D"7ige 'a8er
in*ocado antes a bui!d!usterer()E

9a estructura de la instancia =nCmero & tipo de atri8utos> de8e coincidir con la del
o8!eto Instances usado en el entrenamiento.

doub!e*+ distributionForInstance(Instance instance)(


de*uel*e un *ector doub!e*+ donde cada uno de sus componentes
cuantifica el grado de pertenecia de la instancia al grupo
correspondiente. D"7ige 'a8er in*ocado antes a bui!d!usterer()E.
0e1a( pa6uete de agrupamiento

weka.c!usterers( Pa6uete con


implementaciones de algoritmos de
agrupamiento.

Clase a8stracta Abstract!usterer( mtodos


comunes a todos los algoritmos de agrupamiento.

Clase !uster#va!uation( e*aluador de grupos.


0e1a( seleccin de atri8utos

"l proceso de seleccin de atri8utos se di*ide en dos tareas(

"*aluar la 8ondad de cada atri8uto o com8inacin de atri8utos. Se


delega en un o8!eto 6ue 'erede de la clase
weka.attributeSe!ection.AS#va!uation.

"*aluacin atri8utos simples( $iS.uaredAttribute#va!#


/ainRatioAttribute#va!# In"o/ainAttribute#va!#
ostSensitiveAttribute#va!# ...

"*aluacin grupos de atri8utos( !assi"ierSubset#va!#


onsistenc)Subset#va!# ostSensitiveSubset#va!# ...

BCs6ueda & seleccin de la lista de me!ores atri8utos. Se delega en un


o8!eto 6ue 'erede de la clase
weka.attributeSe!ection.ASSearc$.

BCs6ueda de atri8utos simples( Ranker# ...

BCs6ueda de grupos de atri8utos( 0estFirst# /reed)Stepwise#


#x$austiveSearc$# /eneticSearc$# ...

"l mtodo de 8Cs6ueda o seleccin determina los e*aluadores 6ue


son admitidos =*er javadoc o compro8ar desde la interfa2 gr:fica de
0e1a>.
0e1a( seleccin de atri8utos

%todos

void set#va!uator(AS#va!uation eva!uator)( esta8lece el e*aluador


de atri8utos =o con!untos de atri8utos>.

void setSearc$(ASSearc$ searc$)( esta8lece el mtodo de


8Cs6ueda)seleccin.

void Se!ectAttributes(Instances data)( aplica la seleccin de


atri8utos con el dataset indicado.

Instance reduce'imensiona!it)(Instance in)( reduce la dimensin


de una instancia# inclu&endo Cnicamente los atri8utos seleccionados en la Cltima
e!ecucin de Se!ectAtributes.

Instances reduce'imensiona!it)(Instances in)( reduce la dimensin


de un con!unto de instancias =dataset># inclu&endo Cnicamente los atri8utos
seleccionados en la Cltima e!ecucin de Se!ectAtributes.

int numberAttributesSe!ected()( de*uel*e el nCmero de atri8utos


seleccionados en la Cltima e!ecucin de Se!ectAtributes.

int*+ se!ectedAttributes()( de*uel*e =en orden> el ndice de los


atri8utos seleccionados en la Cltima e!ecucin de Se!ectAtributes.

doub!e*+*+ rankedAttributes()( de*uel*e =en orden> el ndice de los


atri8utos seleccionados en la Cltima e!ecucin de Se!ectAtributes# !unto con
su rele*ancia en una matri2 doub!e*+*+.
0e1a( pa6uete de seleccin de
atri8utos

weka.attributeSe!ection( Pa6uete con mtodos


de seleccin de atri8utos.

"l proceso de seleccin de atri8utos in*olucra 2 tipos


de clases(
,. "*aluadores de atri8utos( 'eredan de la clase a8stracta(
AS#va!uation. Son de 2 tipos

miden la rele*ancia de atri8utos aislados

miden la rele*ancia de com8inaciones de 2 o m:s atri8utos


2. %todos de 8Cs6ueda =selectores>( algoritmos de 8Cs6ueda
6ue empleando los e*aluadores usan di*ersas estrategias
para compro8ar la 8ondad de distintas com8inaciones de
atri8utos =los m:s simples slo 'acen un ordenamiento>.
Heredan de la clase a8stracta( ASSearc$.

Clase AttributeSe!ection( "ncapsula el proceso


de seleccin de atri8utos rele*antes# com8inando un
e*aluador & un selector.
0e1a( uso de filtros

9os filtros pro*een un mecanismo para


procesar con!untos de datos e instancias &
reali2ar transformaciones so8re ellos.
0e1a( uso de filtros

9os filtros tienen dos modos de funcionamiento( modo


entrenamiento & modo uso.

%odo entrenamiento =o modo construccin>(

"l filtro reci8e instancias mediante el mtodo input() 6ue


*an siendo acumuladas

<l in*ocar al mtodo batc$Finis$ed() se finali2a la fase de


construccin & se reali2an los c:lculos & operaciones
necesarias para reali2ar el filtrado.

Se crean las estructuras de datos precisas para el filtrado.

9as instancias reci8idas se filtran & se ponen en la cola de salida de


instancias filtradas =accesi8les mediante la funcin output() en el
mismo orden en 6ue fueron introducidas>.

%odo de uso normal(

"l filtro reci8e instancias con input()# las procesa & las 'ace
disponi8les en la cola de salida mediante la funcin
output().
0e1a( uso de filtros

Para reali2ar la fase de construccin & filtrar un


con!unto de datos completo se puede utili2ar el
mtodo est:tico Instances
useFi!ter(Instances data, Fi!ter "i!ter)
de la clase a8stracta Fi!ter.

4ormalmente la estructura =mCmero & tipo de


atri8utos> de las instancias originales & la de las
instancias filtradas no coincidir:n.

"l mtodo setInputFormat(Instances


instanceIn"o) esta8lece el formato de las instancias
de entrada.

"l mtodo Instances get%utputFormat()


de*uel*e el formato de las instancias filtradas de salida.
0e1a( pa6uete de filtros

weka."i!ters( Pa6uete con di*ersos filtros para procesar los


datos. 4ormalmente son usados# antes de utili2ar los
algoritmos de 0"3<# para pre-procesar los datos de
entrenamiento o e*aluacin# aun6ue en algunos casos los
filtros tienen utilidad por s mismos.

Pueden aplicarse para tratar instancias o atri8utos

Ailtrado de instancias( procesan las instancias de un con!unto de datos reali2ando


transformaciones so8re ellas( seleccin de instancias# 8orrado# generacin de nue*as
instancias# I

Ailtrado de atri8utos( procesan los atri8utos de un con!unto de datos reali2ando


transformaciones so8re ellos( seleccin de atri8utos =delegan el tra8a!o en clases
AttributeSe!ection># cam8io de formato de atri8utos =numrico a nominal# te7to
a nominal# etc.># normali2acin de *alores# generacin de nue*os atri8utos# etc.

"n funcin de la informacin 6ue mane!an(

Ailtros super*isados( usan informacin so8re la clase de las instancias.

Ailtros no super*isados( no usan informacin so8re la clase de las instancias.

Clase a8stracta Fi!ter( define las funcionalidades 8:sicas de todos los


filtros# !unto con mtodos est:ticos Ctiles para crear & e!ecutar filtros.
0e1a( pa6uete de asociacin#
interfa2 gr:fica & e7perimentacin

weka.associations( Pa6uete con las


implementaciones de algoritmos de reglas de
asociacin.

weka.gui( Pa6uete con la implementacin de las


interfaces gr:ficas de 0"3<.

weka.datagenerators# weka.estimators#
weka.experiment( Pa6uetes con clases e interfaces
para la generacin de con!untos de datos GGartificialesGG
& la reali2acin de e7perimentos & e*aluaciones.
JKracias por su atencinL
MPreguntasN

Potrebbero piacerti anche