技术开发 频道

AMO 数据挖掘对象的编程

  【IT168 技术文档】使用 AMO 对数据挖掘对象进行编程非常简单直接。第一步是创建数据结构模型以支持挖掘项目。然后创建数据挖掘模型,该模型支持您要用于预测或查找数据下未看到的关系的挖掘算法。创建挖掘项目(包括结构和算法)后,可以处理挖掘模型以获取定型的模型,稍后从客户端应用程序进行查询和预测时将使用该模型。

  请记住 AMO 不用于查询,而是用于管理挖掘结构和模型。若要查询数据,请使用ADOMD.NET。

  MiningStructure 对象
  挖掘结构是用于创建所有挖掘模型的数据结构的定义。挖掘结构包含与数据库中定义的数据源视图的绑定,以及组成挖掘模型的所有列的定义。一个挖掘结构可包含多个挖掘模型。

  创建 MiningStructure 对象需要执行下列步骤:

  创建 MiningStructure 对象并填充基本属性。这些基本属性包括对象名称、对象 ID(内部标识)和数据源绑定。

  创建模型的列。列可以为标量,也可以为表定义。
  每一列都需要名称、内部 ID、类型、内容定义和绑定。

  使用 MiningStructure 对象的 Update 方法将该对象更新到服务器。
  可对挖掘结构进行处理,处理挖掘结构时,会对子挖掘模型进行处理和重新定型。

  下面的示例代码创建挖掘结构来预测一段时序中的销售情况。运行该示例代码前,请确保作为 CreateSalesForecastingMiningStructure 的参数传递的数据库 db 包含在 db.DataSourceViews[0](对 AdventureWorksDW 示例数据库中 dbo.vTimeSeries 视图的引用)中。

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;
}
0
相关文章