La entropía calcula el grado de desorden de un sistema. En este ejemplo será calculada en base a dos tipos de clases (A, B).
En minería de datos se utiliza para encontrar la partición con la máxima ganancia de información posible.
* Procedimiento:
Sea S un conjunto de 1000 pares (AtributoValor, Clase) por ejemplo:
S = {(15, A), (280, B), (319, A), (775, B), (801, B), (850, A), (855, B), (880, B)....}
p1 = núm. de atributos de A / 1000 -> (la fracción de pares con clase = A)
p2 = núm. de atributos de B / 1000 -> (la fracción de pares con clase = B)
La entropía (o contenido de información) para S es:
Entropia(S) = - p1 * log2(p1) – p2 * log2(p2)
* Características resultado:
- Nos tiene que dar un valor entre 0 y 1.
- Si la entropía es pequeña, entonces el conjunto esta muy ordenado.
- Si la entropía es grande, entonces el conjunto esta muy desordenado.
- En este ejemplo al obtener las clases aleatoriamente, nos debería dar una entropía alta, ya que lo aleatorio es sinónimo de desorden.
Código java (DiscretizarEntropia.java):
package discretizarentropia;
public class DiscretizarEntropia {
public static void main(String[] args) {
int nRegistros = 1000;
Object[][] v = new Object[nRegistros][2];
int cont = 0;
for (int i = 0; i < nRegistros; i++) {
v[i][0] = (int) (Math.random() * 1000);
v[i][1] = (int) (Math.random() * 2);
if (v[i][1].equals(0)) {
cont++;
}
}
double p1 = (float) cont / (float) nRegistros;
double p2 = ((float) nRegistros - (float) cont) / (float) nRegistros;
double S = -(p1 * log(p1, 2)) - (p2 * log(p2, 2));
System.out.println("Número de clases A: " + cont);
System.out.println("Número de clases B: " + (nRegistros - cont));
System.out.println("Fracción de pares con clase A (p1) = " + p1);
System.out.println("Fracción de pares con clase B (p2) = " + p2);
System.out.println("Entropia(S) = " + S);
}
private static Double log(double num, int base) {
return (Math.log10(num) / Math.log10(base));
}
}
Resultado:
run:
Número de clases A: 481
Número de clases B: 519
Fracción de pares con clase A (p1) = 0.48100000619888306
Fracción de pares con clase B (p2) = 0.5189999938011169
Entropia(S) = 0.9989581240309595
BUILD SUCCESSFUL (total time: 0 seconds)
Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.
Archivo del blog
-
►
2012
(38)
- ► septiembre (3)
-
►
2020
(12)
- ► septiembre (1)
-
▼
2024
(29)
-
▼
agosto
(17)
- Problema del Viajante de Comercio TSP (V.1). Métod...
- Problema del Viajante de Comercio TSP (V.2). Métod...
- Problema del Viajante de Comercio TSP (V.3). Métod...
- Problema del viajante de Comercio TSP (IV.2). Méto...
- Problema del Viajante de Comercio TSP (V.3.1). Aná...
- Matriz de conectividad circular.
- Problema del viajante de Comercio TSP (VI). Método...
- Problema del viajante de Comercio TSP (VII). Métod...
- Problema del viajante de Comercio TSP (VIII). Méto...
- Problema del viajante de Comercio TSP (IX). Método...
- Problema del viajante de Comercio TSP (X). Método ...
- Problema del viajante de Comercio TSP (XI). Método...
- Problema del viajante de Comercio TSP (XII). Métod...
- Problema del viajante de Comercio TSP (XIII). Méto...
- Problema del viajante de Comercio TSP (XIV). Métod...
- Problema del viajante de Comercio TSP (XV). Método...
- Juegos VII. La Mansión Misteriosa: Un juego de tex...
-
▼
agosto
(17)
domingo, 19 de marzo de 2017
Suscribirse a:
Entradas (Atom)
Con la tecnología de Blogger.