source: trunk/yat/utility/kNNI.h @ 1726

Last change on this file since 1726 was 1726, checked in by Jari Häkkinen, 12 years ago

Fixes #476. Improved estimate() doc and added test on estimate() return value.

  • 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 1726 2009-01-15 21:15:26Z jari $
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 Jari Häkkinen, Peter Johansson
11  Copyright (C) 2008 Peter Johansson
12
13  This file is part of the yat library, http://dev.thep.lu.se/yat
14
15  The yat library is free software; you can redistribute it and/or
16  modify it under the terms of the GNU General Public License as
17  published by the Free Software Foundation; either version 3 of the
18  License, or (at your option) any later version.
19
20  The yat library is distributed in the hope that it will be useful,
21  but WITHOUT ANY WARRANTY; without even the implied warranty of
22  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23  General Public License for more details.
24
25  You should have received a copy of the GNU General Public License
26  along with yat. If not, see <http://www.gnu.org/licenses/>.
27*/
28
29#include "NNI.h"
30
31#include <iostream>
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 utility::Matrix& matrix,const utility::Matrix& 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.