/// <summary>
        ///     Init the normalized fields.
        /// </summary>
        /// <param name="script">The script.</param>
        public void Init(AnalystScript script)
        {
            if (_normalizedFields == null)
            {
                return;
            }


            foreach (AnalystField norm  in  _normalizedFields)
            {
                DataField f = script.FindDataField(norm.Name);

                if (f == null)
                {
                    throw new AnalystError("Normalize specifies unknown field: "
                                           + norm.Name);
                }

                if (norm.Action == NormalizationAction.Normalize)
                {
                    norm.ActualHigh = f.Max;
                    norm.ActualLow  = f.Min;
                }

                if ((norm.Action == NormalizationAction.Equilateral) ||
                    (norm.Action == NormalizationAction.OneOf) ||
                    (norm.Action == NormalizationAction.SingleField))
                {
                    int index = 0;

                    foreach (AnalystClassItem item  in  f.ClassMembers)
                    {
                        norm.Classes.Add(new ClassItem(item.Name, index++));
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Determine the target field.
        /// </summary>
        ///
        private void DetermineTargetField()
        {
            IList <AnalystField> fields = _script.Normalize.NormalizedFields;

            if (_targetField.Trim().Length == 0)
            {
                bool success = false;

                if (_goal == AnalystGoal.Classification)
                {
                    // first try to the last classify field
                    foreach (AnalystField field  in  fields)
                    {
                        DataField df = _script.FindDataField(field.Name);
                        if (field.Action.IsClassify() && df.Class)
                        {
                            _targetField = field.Name;
                            success      = true;
                        }
                    }
                }
                else
                {
                    // otherwise, just return the last regression field
                    foreach (AnalystField field  in  fields)
                    {
                        DataField df = _script.FindDataField(field.Name);
                        if (!df.Class && (df.Real || df.Integer))
                        {
                            _targetField = field.Name;
                            success      = true;
                        }
                    }
                }

                if (!success)
                {
                    throw new AnalystError(
                              "Can't determine target field automatically, "
                              + "please specify one.\nThis can also happen if you "
                              + "specified the wrong file format.");
                }
            }
            else
            {
                if (_script.FindDataField(_targetField) == null)
                {
                    throw new AnalystError("Invalid target field: "
                                           + _targetField);
                }
            }

            _script.Properties.SetProperty(
                ScriptProperties.DataConfigGoal, _goal);

            if (!_timeSeries && _taskBalance)
            {
                _script.Properties.SetProperty(
                    ScriptProperties.BalanceConfigBalanceField,
                    _targetField);
                DataField field = _analyst.Script.FindDataField(
                    _targetField);
                if ((field != null) && field.Class)
                {
                    int countPer = field.MinClassCount;
                    _script.Properties.SetProperty(
                        ScriptProperties.BalanceConfigCountPer, countPer);
                }
            }

            // now that the target field has been determined, set the analyst fields
            AnalystField af = null;

            foreach (AnalystField field  in  _analyst.Script.Normalize.NormalizedFields)
            {
                if ((field.Action != NormalizationAction.Ignore) &&
                    field.Name.Equals(_targetField, StringComparison.InvariantCultureIgnoreCase))
                {
                    if ((af == null) || (af.TimeSlice < field.TimeSlice))
                    {
                        af = field;
                    }
                }
            }

            if (af != null)
            {
                af.Output = true;
            }

            // set the clusters count
            if (_taskCluster)
            {
                if ((_targetField.Length == 0) ||
                    (_goal != AnalystGoal.Classification))
                {
                    _script.Properties.SetProperty(
                        ScriptProperties.ClusterConfigClusters, 2);
                }
                else
                {
                    DataField tf = _script
                                   .FindDataField(_targetField);
                    _script.Properties.SetProperty(
                        ScriptProperties.ClusterConfigClusters,
                        tf.ClassMembers.Count);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Init the normalized fields.
        /// </summary>
        ///
        /// <param name="script">The script.</param>
        public void Init(AnalystScript script)
        {
            if (_normalizedFields == null)
            {
                return;
            }

            foreach (AnalystField norm  in  _normalizedFields)
            {
                DataField f = script.FindDataField(norm.Name);

                if (f == null)
                {
                    throw new AnalystError("Normalize specifies unknown field: "
                                           + norm.Name);
                }

                if (norm.Action == NormalizationAction.Normalize)
                {
                    norm.ActualHigh = f.Max;
                    norm.ActualLow = f.Min;
                }

                if ((norm.Action == NormalizationAction.Equilateral)
                    || (norm.Action == NormalizationAction.OneOf)
                    || (norm.Action == NormalizationAction.SingleField))
                {
                    int index = 0;

                    foreach (AnalystClassItem item  in  f.ClassMembers)
                    {
                        norm.Classes.Add(new ClassItem(item.Name, index++));
                    }
                }
            }
        }