Sei sulla pagina 1di 3

Codigo para eliminar cualquier tabla existente

BEGIN
EXECUTE IMMEDIATE 'DROP TABLE svmo_cust_sample_settings';
EXCEPTION WHEN OTHERS THEN
NULL;
END;

Codigo para crear una nueva tabla con dos columnas.


set echo off
CREATE TABLE svmo_cust_sample_settings (
setting_name VARCHAR2 (30),
setting_value VARCHAR2 (4000));
ser echo on

Con este c�digo podemos insertar 2 filas a nuestra tabla con valores de
configuraci�n para el SVM.
BEGIN
INSERT INTO svmo_cust_smaple_settings (setting_name, setting_value) VALUES
(dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines);
INSERT INTO svmo_cust_smaple_settings (setting_name, setting _value) VALUES
(dbms_data_mining.prep_auto, dbms_data_mining.prep_auto_on);
END;

Con este codigo podemos crear nombre del modelo, tipo de mineria ( en este caso
clasificacion)
nombre de la tabla de datos, el nombre de la columna de indentificacion de casos,
el nombre de la columna objetivo (que en este caso es NULL)
BEGIN
DBMS_DATA_MINING.CREATE_MODEL (
model_name =>'SVMO_CUST_Class_sample',
mining_function => dbms_data_mining.classification,
data_table_name => 'cust_data_one_class_pv'
case_id_colum_name => 'cust_id'
target_colum_name => NULL,
settings_table_name => 'svmo_cust_sample_settings');
END;

Este c�digo permitir� revisar los atributos de nuestro modelo.


BEGIN
DBMS_DATA_MINING.CREATE_MODEL (
model_name =>'SVMO_CUST_Class_sample',
mining_function => dbms_data_mining.classification,
data_table_name => 'cust_data_one_class_pv'
case_id_colum_name => 'cust_id'
target_colum_name => NULL,
settings_table_name => 'svmo_cust_sample_settings');
END;

El siguiente c�digo nos dejara realizar una consulta para recuperar datos de una
tabla con dos columnas:
Atribute name
Atribute type

SELEC setting_name, setting_value


FROM user_mining_model_settings
WHERE model_name = 'SVMO_CUST_CLASS_SAMPLE'
ORDER BY setting_name;
SELEC setting_name, setting_value
FROM user_mining_model_attribute_type
WHERE model_name = 'SVMO_CUST_CLASS_SAMPLE'
ORDER BY attribute_name;

Este codigo se utiliza para hacer consultas para obtener detalles del modelo SVM,
se mostraran los detalles del modelo SVM en una tabla incluyendo: clase, nombre del
atribbuto, valor del atributo, coeficiente correspondiente.
WITH
mod_dtls AS (
SELEC *
FROM mod_dtls D
TABLE(D,attribute_set) A
ORDER BY D.class, ABS(A.coefficiente) DESC
)
SELECT class, attribute_name aname, attribute_value aval, coefficient coeff
FROM model_details
WHERE ROWNUM < 50;
Para limitar el numero de filas usar el WHERE ROWNUM <50;

Muestra la vistas del modelo que se genera mostrando dos columnas: View type y view
name
SELECT view_name, view type FROM user_mining_model_views
WHERE model_name= 'SVMO-CUST_CLASS_SAMPLE'
ORDER BY view name;

El siguente codigo sirve para predecir la probabilidad o el comportamiento futuro


de los clientes
set long 200000
col pd format a90
SELECT cust_id, pd FROM
(SELECT cust_id,
PREDICTION_DETAILS ( SVMO_CUST_CLASS_SAMPLE, 0 using *) pd,
rank() over (order by prediction_probability(
SVMO_CUST_Class_sample, 0 using *) DESC, cust_id) rnk
FROM cust_data_one_class_pv
WHERE rnk <=5
order by rnk;

El siguinete codigo se utilizara para saber la clase de la preiccion


colum SEX formar a12
SELECT SEX, round(avg(age)) age,
round(avg(TIME_AS_CUSTOMER)) TIME_AS_CUSTOMER,
count(*) cnt
FROM cust_data_one_class_pv
WHERE prediction (SVMO_CUST_CLASS_SAMPLE using *) -1
GROUP BY SEX
ORDER BY SEX;

Este codigo se usa para mostrar porcentajes de una probabilidad redondeada a


numeros enteros
select ROUND (prob_typical,5)*100||'%? Probability_BUY
from
(select
prediction_probability (SVMO_CUST_CLASS_SAMPLE, 1 using
44 AS age,
3 AS TIME_AS_CUSTOMER
'programmer/developer' AS PROFESSION,
'SINGLE' AS MARITAL_STATUS
'NorthEast' AS REGION,
'NY' AS STATE
'M' AS SEX
'20442' AS SALARY,
'0' AS HOUSE_OWNERSHIP
) prob_typical
from dual),

El siguiente codigo servira para identificar futuros cambios de las personas o


clientespara tomar futuras decisiones.
col MARITAL_STATUS format a30
selct cust_id, MARITAL_STATUS, rank_anom, anom_det FROM
(SELECT cust-id, MARITAL_STATUS, anom_det,
rank() Over (PARTITION BY MARITAL_STATUS
ORDER BY ROUND (ANOM_PROB,8)DESC,cust_id) rank_anom FROM
(SELECT cust_id, MARITAL_STATUS,
PREDICTION_PROBABILITY (OF ANOMALY, 0 USING *)
OVER (PARTITION BY MARITAL_STATUS
ORDER BY ROUND (ANOM_PROB,8) DESC, cust_id) rank_anom FROM
(SELECT cust_id, MARITAL_SATATUS,
PREDITION_PROBABILITY (OF ANOMALY, 0 USING ')
OVER (PARTITION BY MARITAL_STATUS) anom_prob,
PREDICTION_DETAILS (OF ANOMALY, 0, 3 USING *)
OVER (PARTITION BY MARITAL_STATUS) anom_det
FROM cust_data_one_class_pv
))
where rank anom < 33 order by 2, 3;

Potrebbero piacerti anche