Changeset 16307 for branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing/3.4/Content/ManipulationContent.cs
- Timestamp:
- 11/20/18 11:54:35 (5 years ago)
- Location:
- branches/2845_EnhancedProgress
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2845_EnhancedProgress
- Property svn:mergeinfo changed
-
branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing
- Property svn:mergeinfo changed
-
branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing/3.4
- Property svn:mergeinfo changed
-
branches/2845_EnhancedProgress/HeuristicLab.DataPreprocessing/3.4/Content/ManipulationContent.cs
r15110 r16307 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 6Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 20 20 #endregion 21 21 22 using System; 23 using System.Collections.Generic; 22 24 using System.Drawing; 25 using System.Linq; 23 26 using HeuristicLab.Common; 24 27 using HeuristicLab.Core; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 25 29 26 30 namespace HeuristicLab.DataPreprocessing { 27 28 31 [Item("Manipulation", "Represents the available manipulations on a data set.")] 29 public class ManipulationContent : Item, IViewShortcut { 32 [StorableClass] 33 public class ManipulationContent : PreprocessingContent, IViewShortcut { 30 34 public static new Image StaticItemImage { 31 35 get { return HeuristicLab.Common.Resources.VSImageLibrary.Method; } 32 36 } 33 37 34 public ManipulationLogic ManipulationLogic { get; private set; } 35 public SearchLogic SearchLogic { get; private set; } 36 public FilterLogic FilterLogic { get; private set; } 37 38 public ManipulationContent(ManipulationLogic manipulationLogic, SearchLogic searchLogic, FilterLogic filterLogic) { 39 ManipulationLogic = manipulationLogic; 40 SearchLogic = searchLogic; 41 FilterLogic = filterLogic; 38 #region Constructor, Cloning & Persistence 39 public ManipulationContent(IFilteredPreprocessingData preprocessingData) 40 : base(preprocessingData) { 42 41 } 43 42 44 public ManipulationContent(ManipulationContent content, Cloner cloner) : base(content, cloner) { } 45 43 public ManipulationContent(ManipulationContent original, Cloner cloner) : 44 base(original, cloner) { 45 } 46 46 public override IDeepCloneable Clone(Cloner cloner) { 47 47 return new ManipulationContent(this, cloner); 48 48 } 49 50 [StorableConstructor] 51 protected ManipulationContent(bool deserializing) 52 : base(deserializing) { } 53 #endregion 54 55 public List<int> RowsWithMissingValuesGreater(double percent) { 56 List<int> rows = new List<int>(); 57 58 for (int i = 0; i < PreprocessingData.Rows; ++i) { 59 int missingCount = PreprocessingData.GetRowMissingValueCount(i); 60 if (100f / PreprocessingData.Columns * missingCount > percent) { 61 rows.Add(i); 62 } 63 } 64 65 return rows; 66 } 67 68 public List<int> ColumnsWithMissingValuesGreater(double percent) { 69 List<int> columns = new List<int>(); 70 for (int i = 0; i < PreprocessingData.Columns; ++i) { 71 int missingCount = PreprocessingData.GetMissingValueCount(i); 72 if (100f / PreprocessingData.Rows * missingCount > percent) { 73 columns.Add(i); 74 } 75 } 76 77 return columns; 78 } 79 80 public List<int> ColumnsWithVarianceSmaller(double variance) { 81 List<int> columns = new List<int>(); 82 for (int i = 0; i < PreprocessingData.Columns; ++i) { 83 if (PreprocessingData.VariableHasType<double>(i)) { 84 double columnVariance = PreprocessingData.GetVariance<double>(i); 85 if (columnVariance < variance) { 86 columns.Add(i); 87 } 88 } else if (PreprocessingData.VariableHasType<DateTime>(i)) { 89 double columnVariance = (double)PreprocessingData.GetVariance<DateTime>(i).Ticks / TimeSpan.TicksPerSecond; 90 if (columnVariance < variance) { 91 columns.Add(i); 92 } 93 } 94 } 95 return columns; 96 } 97 98 public void DeleteRowsWithMissingValuesGreater(double percent) { 99 DeleteRows(RowsWithMissingValuesGreater(percent)); 100 } 101 102 public void DeleteColumnsWithMissingValuesGreater(double percent) { 103 DeleteColumns(ColumnsWithMissingValuesGreater(percent)); 104 } 105 106 public void DeleteColumnsWithVarianceSmaller(double variance) { 107 DeleteColumns(ColumnsWithVarianceSmaller(variance)); 108 } 109 110 private void DeleteRows(List<int> rows) { 111 PreprocessingData.InTransaction(() => { 112 foreach (int row in rows.OrderByDescending(x => x)) { 113 PreprocessingData.DeleteRow(row); 114 } 115 }); 116 } 117 118 private void DeleteColumns(List<int> columns) { 119 PreprocessingData.InTransaction(() => { 120 foreach (int column in columns.OrderByDescending(x => x)) { 121 PreprocessingData.DeleteColumn(column); 122 } 123 }); 124 } 49 125 } 50 126 }
Note: See TracChangeset
for help on using the changeset viewer.