Crear Multiples Muestras Aleatorias

    El siguiente scrip carga la tabla Clientes y de esta crea varios set de datos con muestra aleatoria. Cada set de datos contiene campos elegidos al azar. Esto con el fin de crear diferentes modelos para predecir perdida de cliente, usando el campo ClienteActivo como CampoObjetivo.


    Clientes:LOAD * INLINE [
       IdCliente, ClienteActivo, Edad, EstadoCivil, MontoCompra, CantidadCompra, MesesAntiguedad
        1,         SI,            66, Casado,         33,             4,                   4
        2,        
    NO,            25, Soltero,        54,             1,                   8

        3,         SI,            58, Divorciado,     45,             8,                   6

        4,         NO,            57, Viudo,         87,             6,                   1

        5,         SI,            45, Casado,        10,             8,                   6

        6,         NO,            63, Soltero,       34,             4,                   5

        7,         SI,            26, Casado,        12,             1,                   2

        8,         SI,            21, Soltero,       20,            10,                   6

        9,         NO,            26, Casado,        97,             5,                  12

        10,        NO,            28, Soltero,       61,             4,                  10

        11,        NO,            67, Divorciado,    89,            10,                   2

        12,        SI,            27, Viudo,         10,             8,                   9

        13,        NO,            63, Casado,        85,             1,                  12

        14,        NO,            36, Soltero,       97,             6,                   7

        15,        SI,            20, Casado,        26,             5,                  12

        16,        SI,            29, Soltero,       86,             10,                  1

        17,        SI,            41, Casado,        20,             2,                   1

        18,        SI,            21, Soltero,       36,             6,                  11

        19,        NO,            24, Divorciado,    85,             6,                   3

        20,        NO,            47, Viudo,         85,             4,                   4];



     

    let SetInicial='Clientes';

    let CampoId='IdCliente';

    let CampoObjetivo='ClienteActivo';

    let CantCampos=NoOfFields('$(SetInicial)');

    FOR CantidadSet=1 to 15
       
    let setfinal='$(CampoId)'&', '&'$(CampoObjetivo)';
              
    FOR i=Ceil(Rand()*( $(CantCampos)-3)) to $(CantCampos)
                
    let Campo_$(i)=if(FieldName($(i),'$(SetInicial)')<>'$(CampoId)'
                              
    and FieldName($(i),'$(SetInicial)')<>'$(CampoObjetivo)'
                              
    and rand()>rand(),','&FieldName($(i),'$(SetInicial)'),'');
                
    let set1=' $'&'(Campo_'&$(i)&')';
                
    let setfinal='$(setfinal)'&'$(set1)';  
              
    NEXT
      
    QUALIFY*; UNQUALIFY $(CampoId);
       Set
    $(CantidadSet): LOAD $(setfinal)  Resident $(SetInicial) Where Rand()>0.5;

    NEXT

     

     

    Los set de datos quedarían como sigue:

    muestras.jpg


    Nota Publicada en blog: Qlikview en Español