Exemplo n.º 1
0
        protected virtual Matrix <double> ExtractQueryDataAsMatrix(
            IDataFrame queryDataFrame,
            IKnnPredictionModel <TPredictionResult> knnModel,
            int dependentFeatureIdx)
        {
            var dependentFetureName = (dependentFeatureIdx < queryDataFrame.ColumnsCount && dependentFeatureIdx >= 0)
                ? queryDataFrame.ColumnNames[dependentFeatureIdx]
                : string.Empty;
            var queryMatrix = queryDataFrame.GetSubsetByColumns(
                queryDataFrame.ColumnNames.Where(colName => colName != dependentFetureName).ToList()).GetAsMatrix();

            return(queryMatrix);
        }
Exemplo n.º 2
0
        protected virtual Tuple <Matrix <double>, Matrix <double> > NormalizeData(IDataFrame queryDataFrame, IKnnPredictionModel <TPredictionResult> knnModel, int dependentFeatureIdx)
        {
            var modelMatrix = knnModel.TrainingData;
            var queryMatrix = ExtractQueryDataAsMatrix(queryDataFrame, knnModel, dependentFeatureIdx);

            return(PerformNormalization(modelMatrix, queryMatrix));
        }
        protected override Tuple <Matrix <double>, Matrix <double> > NormalizeData(IDataFrame queryDataFrame, IKnnPredictionModel <TPredictionResult> knnModel, int dependentFeatureIdx)
        {
            var backwardsEliminationModel = knnModel as IBackwardsEliminationKnnModel <TPredictionResult>;
            var featureIndicesToRemove    = backwardsEliminationModel.RemovedFeaturesData.Select(f => queryDataFrame.ColumnNames.IndexOf(f.FeatureName)).OrderBy(i => i).ToList();
            var relevantFeatures          =
                queryDataFrame.ColumnNames.Where((colName, colIdx) => !featureIndicesToRemove.Contains(colIdx) && colIdx != dependentFeatureIdx).ToList();

            var modelMatrix = GetModelMatrixWithOnlyRelevantColumns(knnModel.TrainingData, featureIndicesToRemove);
            var queryDataFrameWithoutRedundantColumns = queryDataFrame.GetSubsetByColumns(relevantFeatures).GetAsMatrix();

            return(base.PerformNormalization(modelMatrix, queryDataFrameWithoutRedundantColumns));
        }