/* * Create mining model */ private void CreateMiningModel(Microsoft.AnalysisServices.MiningStructure objStructure, string sName, string sAlgorithm, List <string> lsAtrPredict, List <string> lsMeasurePredict, List <bool> lbPredictItems, int parOne, int parTwo) { Microsoft.AnalysisServices.MiningModel myMiningModel = objStructure.CreateMiningModel(true, sName); /* Notes: * Each mining column must have its' input and predict columns * Input and key columns are added automatically when they are created in the mining structure * Predict columns can be added in the mining model * An input column can be also a predict column */ myMiningModel.Algorithm = sAlgorithm; switch (sAlgorithm) { case MiningModelAlgorithms.MicrosoftClustering: myMiningModel.AlgorithmParameters.Add("CLUSTERING_METHOD", parOne); if (parTwo > 0) { myMiningModel.AlgorithmParameters.Add("CLUSTER_COUNT", parTwo); } break; //case MiningModelAlgorithms.MicrosoftTimeSeries: // myMiningModel.AlgorithmParameters.Add("PERIODICITY_HINT", "{12}"); // {12} represents the number of months for prediction // break; case MiningModelAlgorithms.MicrosoftNaiveBayes: break; case MiningModelAlgorithms.MicrosoftDecisionTrees: myMiningModel.AlgorithmParameters.Add("SCORE_METHOD", parOne); myMiningModel.AlgorithmParameters.Add("SPLIT_METHOD", parTwo); break; } /***************** Predict columns *****************/ // add optional predict columns if (lsAtrPredict.Count != 0) { // predict columns for (int i = 0; i < lsAtrPredict.Count; i++) { Microsoft.AnalysisServices.MiningModelColumn modelColumn = myMiningModel.Columns.GetByName(lsAtrPredict[i]); modelColumn.SourceColumnID = lsAtrPredict[i]; if (lbPredictItems[i] == true) { modelColumn.Usage = MiningModelColumnUsages.PredictOnly; } else { modelColumn.Usage = MiningModelColumnUsages.Predict; } } } myMiningModel.Update(); }
/* * Create mining model with custom fields and algorithm */ private void CreateCustomModel(MiningStructure objStructure, string sAlgorithm, string sModelName, string sKeyColumn, List <string> lPredictColumns, List <bool> lbPredictColumns, int parOne, int parTwo) { // drop existing model if (objStructure.MiningModels.ContainsName(sModelName)) { objStructure.MiningModels[sModelName].Drop(); } // Detailed description of the model algorithms is here: // http://msdn.microsoft.com/en-us/library/ms175595.aspx // More customisation for these algorithms can be found here: // http://msdn.microsoft.com/en-us/library/cc280427.aspx // Also a model example can be found here: // http://msdn.microsoft.com/en-us/library/ms345087(v=SQL.100).aspx Microsoft.AnalysisServices.MiningModel myMiningModel = objStructure.CreateMiningModel(true, sModelName); myMiningModel.Algorithm = sAlgorithm; switch (sAlgorithm) { case MiningModelAlgorithms.MicrosoftClustering: myMiningModel.AlgorithmParameters.Add("CLUSTERING_METHOD", parOne); myMiningModel.AlgorithmParameters.Add("CLUSTER_COUNT", parTwo); break; //case MiningModelAlgorithms.MicrosoftTimeSeries: // myMiningModel.AlgorithmParameters.Add("PERIODICITY_HINT", "{12}"); // {12} represents the number of months for prediction // break; case MiningModelAlgorithms.MicrosoftNaiveBayes: break; case MiningModelAlgorithms.MicrosoftDecisionTrees: myMiningModel.AlgorithmParameters.Add("SCORE_METHOD", parOne); myMiningModel.AlgorithmParameters.Add("SPLIT_METHOD", parTwo); break; } /***************** Predict columns *****************/ // add optional predict columns if (lPredictColumns.Count != 0) { // predict columns for (int i = 0; i < lPredictColumns.Count; i++) { Microsoft.AnalysisServices.MiningModelColumn modelColumn = myMiningModel.Columns.GetByName(lPredictColumns[i]); modelColumn.SourceColumnID = lPredictColumns[i]; if (lbPredictColumns[i] == true) { modelColumn.Usage = MiningModelColumnUsages.PredictOnly; } else { modelColumn.Usage = MiningModelColumnUsages.Predict; } } } myMiningModel.Update(); }