<p>I finished implementing basic structure of Imputer class. So I wanted to get your opinion about it.</p>

<p>I renamed DatasetInfo to DatasetMapper, which accepts template parameter of MapPolicy. ( can be used to store different kinds of maps.)<br>
DatasetMapper, however, still provides backward compatibility with typedef:<br>
<code>using DatasetInfo = DatasetMapper&lt;IncrementPolicy&gt;</code>. The IncrementPolicy denotes the original mapping policy used, which increments numbers for different categories, starting from 0.</p>

<p>I believe what is left is to connect it with data::Load function so that it creates maps for missing values.</p>

<p>Imputer class is also added in this pull request. Imputer also accepts template parameters, so that different strategies can be applied. </p>

<p>Strategies and tests are yet to be fully implemented.</p>

<p>Overall flow of the DatasetMapper and Imputer can be derived from <a href="https://github.com/keonkim/mlpack/blob/5a517c25ef55de1f4814dc3605190d17f868ff82/src/mlpack/methods/preprocess/preprocess_imputer_main.cpp">preprocess_imputer_main.hpp</a></p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>&nbsp;&nbsp;<a href='https://github.com/mlpack/mlpack/pull/694'>https://github.com/mlpack/mlpack/pull/694</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>concept work for imputer</li>
  <li>Merge branch &#39;master&#39; of github.com:keonkim/mlpack into imputer</li>
  <li>do not to use NaN by default, let the user specify</li>
  <li>Merge branch &#39;master&#39; of github.com:keonkim/mlpack into imputer</li>
  <li>add template to datasetinfo and add imputer class</li>
  <li>clean datasetinfo class and rename files</li>
  <li>implement basic imputation strategies</li>
  <li>modify imputer_main and clean logs</li>
  <li>add parameter verification for imputer_main</li>
  <li>add custom strategy to impute_main</li>
  <li>add datatype change in IncrementPolicy</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-0">src/mlpack/core/data/CMakeLists.txt</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-1">src/mlpack/core/data/dataset_info.hpp</a>
    (78)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-2">src/mlpack/core/data/dataset_info_impl.hpp</a>
    (77)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-3">src/mlpack/core/data/impute_strategies/CMakeLists.txt</a>
    (17)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-4">src/mlpack/core/data/impute_strategies/custom_strategy.hpp</a>
    (26)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-5">src/mlpack/core/data/impute_strategies/mean_strategy.hpp</a>
    (62)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-6">src/mlpack/core/data/impute_strategies/median_strategy.hpp</a>
    (46)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-7">src/mlpack/core/data/impute_strategies/mode_strategy.hpp</a>
    (38)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-8">src/mlpack/core/data/imputer.hpp</a>
    (125)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-9">src/mlpack/core/data/map_policies/CMakeLists.txt</a>
    (15)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-10">src/mlpack/core/data/map_policies/increment_policy.hpp</a>
    (67)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-11">src/mlpack/core/data/map_policies/missing_policy.hpp</a>
    (67)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-12">src/mlpack/methods/preprocess/CMakeLists.txt</a>
    (2)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/694/files#diff-13">src/mlpack/methods/preprocess/preprocess_imputer_main.cpp</a>
    (130)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/mlpack/mlpack/pull/694.patch'>https://github.com/mlpack/mlpack/pull/694.patch</a></li>
  <li><a href='https://github.com/mlpack/mlpack/pull/694.diff'>https://github.com/mlpack/mlpack/pull/694.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/694">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe/AJ4bFGyMoM009f47adkUpo2MIBzS0K6dks5qLh6sgaJpZM4I07W-">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFHT8kfzndi1sinLvYld29ewgpBlPks5qLh6sgaJpZM4I07W-.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/694"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>