source: trunk/yat/utility/kNNI.h

Last change on this file was 4207, checked in by Peter, 6 weeks ago

update copyright statements

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1#ifndef _theplu_yat_utility_knni_
2#define _theplu_yat_utility_knni_
3
4// $Id: kNNI.h 4207 2022-08-26 04:36:28Z peter $
5
6/*
7  Copyright (C) 2004 Jari Häkkinen
8  Copyright (C) 2005 Jari Häkkinen, Peter Johansson
9  Copyright (C) 2006 Jari Häkkinen
10  Copyright (C) 2007, 2008 Jari Häkkinen, Peter Johansson
11  Copyright (C) 2009 Jari Häkkinen
12  Copyright (C) 2022 Peter Johansson
13
14  This file is part of the yat library, http://dev.thep.lu.se/yat
15
16  The yat library is free software; you can redistribute it and/or
17  modify it under the terms of the GNU General Public License as
18  published by the Free Software Foundation; either version 3 of the
19  License, or (at your option) any later version.
20
21  The yat library is distributed in the hope that it will be useful,
22  but WITHOUT ANY WARRANTY; without even the implied warranty of
23  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24  General Public License for more details.
25
26  You should have received a copy of the GNU General Public License
27  along with yat. If not, see <http://www.gnu.org/licenses/>.
28*/
29
30#include "NNI.h"
31
32#include <vector>
33
34namespace theplu {
35namespace yat {
36namespace utility {
37
38  ///
39  /// @brief kNNimpute
40  ///
41  /// kNNI is the binary weight implementation of NNI. This follows
42  /// the work done by Troyanskaya et al. cited in the NNI document
43  /// referred to in the NNI class documentation.
44  ///
45  /// This is a special case of the WeNNI, but is maintained since it
46  /// is faster than the more general WeNNI.
47  ///
48  /// @see NNI and WeNNI
49  ///
50  class kNNI : public NNI
51  {
52  public:
53    ///
54    /// Constructor
55    ///
56    kNNI(const MatrixBase& matrix, const MatrixBase& weight,
57         const unsigned int neighbours);
58
59    /**
60       \brief Function doing kNNI imputation.
61
62       Perform kNNI on data in \a matrix with binary uncertainty
63       weights in \a weight using \a neighbours for the new impute
64       value.
65
66       The return value can be used as an indication of how well the
67       imputation worked. The return value should be zero if proper
68       pre-processing of data is done. An example of bad data is a
69       matrix with a column of zero weights, another is a
70       corresponding situation with a row with all weights zero.
71
72       \return The number of rows that have at least one value not
73       imputed.
74    */
75    unsigned int estimate(void);
76
77  private:
78    std::vector<size_t> mv_rows_; // index to rows that have values to estimate
79  };
80
81}}} // of namespace utility, yat, and theplu
82
83#endif
Note: See TracBrowser for help on using the repository browser.