Programmazione di oggetti di data mining AMO

Si applica a: SQL Server Analysis Services Azure Analysis Services Power BI Premium

La programmazione di oggetti di data mining tramite AMO è un'operazione estremamente semplice. Il primo passaggio consiste nella creazione del modello della struttura dei dati per supportare il progetto di data mining. Successivamente viene creato il modello di data mining che supporta l'algoritmo di data mining da utilizzare per stimare o individuare le relazioni non visibili sottostanti ai dati. Dopo avere creato il progetto di data mining, inclusi la struttura e gli algoritmi, è possibile elaborare i modelli di data mining per ottenere i modelli di cui è stato eseguito il training da utilizzare in un secondo momento durante l'esecuzione di query e di stime dall'applicazione client.

È importante tenere presente che AMO non è un modello per l'esecuzione di query, ma consente di gestire e amministrare le strutture e i modelli di data mining. Per eseguire query sui dati, usare Sviluppo con ADOMD.NET.

Oggetti MiningStructure

Una struttura di data mining è la definizione della struttura dei dati utilizzati per creare tutti i modelli di data mining. Una struttura di data mining contiene un'associazione a una vista origine dati definita nel database e contiene definizioni per tutte le colonne che partecipano ai modelli di data mining. In una struttura di data mining possono essere contenuti più modelli di data mining.

La creazione MiningStructure di un oggetto richiede i passaggi seguenti:

  1. Creare MiningStructure l'oggetto e popolare gli attributi di base. Gli attributi di base includono il nome dell'oggetto, l'ID dell'oggetto (identificazione interna) e l'associazione all'origine dati.

  2. Creazione delle colonne per il modello. Le colonne possono essere scalari o definizioni di tabella.

    Per ogni colonna è necessario definire un nome e un ID interno, un tipo, una definizione del contenuto e un'associazione.

  3. Aggiornare MiningStructure l'oggetto al server usando il metodo Update dell'oggetto .

    Le strutture di data mining possono essere elaborate. Quando vengono elaborate, i modelli di data mining figlio vengono elaborati oppure ne viene eseguito nuovamente il training.

Nel codice di esempio seguente viene creata una struttura di data mining per prevedere le vendite in una serie temporale. Prima di eseguire il codice di esempio, verificare che il database , passato come parametro per , contenga in un riferimento alla vista CreateSalesForecastingMiningStructure db.DataSourceViews[0] dbo.vTimeSeries nel database di esempio adventure works Data Warehouse.

public static MiningStructure CreateSalesForecastingMiningStructure(Database db)  
{  
    MiningStructure ms = db.MiningStructures.FindByName("Forecasting Sales Structure");  
    if (ms != null)  
        ms.Drop();  
    ms = db.MiningStructures.Add("Forecasting Sales Structure", "Forecasting Sales Structure");  
    ms.Source = new DataSourceViewBinding(db.DataSourceViews[0].ID);  
  
    ScalarMiningStructureColumn amount = ms.Columns.Add("Amount", "Amount");  
    amount.Type = MiningStructureColumnTypes.Double;  
    amount.Content = MiningStructureColumnContents.Continuous;  
    amount.KeyColumns.Add("vTimeSeries", "Amount", OleDbType.Currency);  
  
    ScalarMiningStructureColumn modelRegion = ms.Columns.Add("Model Region", "Model Region");  
    modelRegion.IsKey = true;  
    modelRegion.Type = MiningStructureColumnTypes.Text;  
    modelRegion.Content = MiningStructureColumnContents.Key;  
    modelRegion.KeyColumns.Add("vTimeSeries", "ModelRegion", OleDbType.WChar, 56);  
  
    ScalarMiningStructureColumn qty = ms.Columns.Add("Quantity", "Quantity");  
    qty.Type = MiningStructureColumnTypes.Long;  
    qty.Content = MiningStructureColumnContents.Continuous;  
    qty.KeyColumns.Add("vTimeSeries", "Quantity", OleDbType.Integer);  
  
    ScalarMiningStructureColumn timeIndex = ms.Columns.Add("TimeIndex", "TimeIndex");  
    timeIndex.IsKey = true;  
    timeIndex.Type = MiningStructureColumnTypes.Long;  
    timeIndex.Content = MiningStructureColumnContents.KeyTime;  
    timeIndex.KeyColumns.Add("vTimeSeries", "TimeIndex", OleDbType.Integer);  
  
    ms.Update();  
    return ms;  
}  

Oggetti MiningModel

Un modello di data mining è un repository per tutte le colonne e le definizioni di colonna che verranno utilizzate in un algoritmo di data mining.

La creazione MiningModel di un oggetto richiede i passaggi seguenti:

  1. Creare MiningModel l'oggetto e popolare gli attributi di base.

    Gli attributi di base includono il nome dell'oggetto, l'ID dell'oggetto (identificazione interna) e la specifica dell'algoritmo di data mining.

  2. Aggiunta delle colonne al modello di data mining. Una delle colonne deve essere definita come chiave del case.

  3. Aggiornare MiningModel l'oggetto al server usando il metodo Update dell'oggetto .

    MiningModel Gli oggetti possono essere elaborati indipendentemente dagli altri modelli nell'oggetto MiningStructure padre.

Nel codice di esempio seguente viene creato un modello di previsione Microsoft Time Series basato sulla struttura di data mining "Forecasting Sales Structure":

public static MiningModel CreateSalesForecastingMiningModel(MiningStructure ms)  
{  
    if (ms.MiningModels.ContainsName("Sales Forecasting Model"))  
    {  
        ms.MiningModels["Sales Forecasting Model"].Drop();  
    }  
    MiningModel mm = ms.CreateMiningModel(true, "Sales Forecasting Model");  
    mm.Algorithm = MiningModelAlgorithms.MicrosoftTimeSeries;  
    mm.AlgorithmParameters.Add("PERIODICITY_HINT", "{12}");  
  
    MiningModelColumn amount = new MiningModelColumn();  
    amount.SourceColumnID = "Amount";  
    amount.Usage = MiningModelColumnUsages.Predict;  
  
    MiningModelColumn modelRegion = new MiningModelColumn();  
    modelRegion.SourceColumnID = "Model Region";  
    modelRegion.Usage = MiningModelColumnUsages.Key;  
  
    MiningModelColumn qty = new MiningModelColumn();  
    qty.SourceColumnID = "Quantity";  
    qty.Usage = MiningModelColumnUsages.Predict;  
  
    MiningModelColumn ti = new MiningModelColumn();  
    ti.SourceColumnID = "TimeIndex";  
    ti.Usage = MiningModelColumnUsages.Key;  
  
    mm.Update();  
    mm.Process(ProcessType.ProcessFull);  
    return mm;  
}