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); }
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)); }