/usr/include/shogun/ensemble/WeightedMajorityVote.h is in libshogun-dev 3.2.0-7.5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Written (W) 2013 Viktor Gal
* Copyright (C) 2013 Viktor Gal
*/
#ifndef _WEIGHTED_MAJORITY_VOTE_H_
#define _WEIGHTED_MAJORITY_VOTE_H_
#include <shogun/ensemble/CombinationRule.h>
#include <shogun/lib/SGVector.h>
namespace shogun
{
/**
* @brief Weighted Majority Vote implementation.
*
* For a given feature vector the combined value is going to be:
* \f[
* label = max_{j=0..C} \sum_{i=0}^{N} w_i d_{i,j}
* \f]
* where \f$N\f$ is the number of Machines in the ensemble
* \f$w_i\f$ is the weight of ith Machine
* \f$d_{i,j}\f$ decision of the ith Machine for jth class.
* \f$C\f$ is the number of classes
*
*/
class CWeightedMajorityVote : public CCombinationRule
{
public:
/**
* Default ctor
*/
CWeightedMajorityVote();
/**
* CWeightedMajorityVote constructor
*
* @param weights a vector of weights, where the nth element is the
* weight of the nth Machine in ensemble.
*/
CWeightedMajorityVote(SGVector<float64_t>& weights);
virtual ~CWeightedMajorityVote();
/**
* Combines a matrix of an ensemble of Machines output, where each
* column is a given Machine's classification/regression output
* for the input Features.
*
* @param ensemble_result SGMatrix
* @return a vector where the nth element is the combined value of the Machines for the nth feature vector
*/
virtual SGVector<float64_t> combine(const SGMatrix<float64_t>& ensemble_result) const;
/**
* Combines a vector of Machine ouputs for a given feature vector.
* The nth element of the vector is the nth Machine's output in the ensemble.
*
* @param ensemble_result SGVector<float64_t> with the Machine's output
* @return the combined value
*/
virtual float64_t combine(const SGVector<float64_t>& ensemble_result) const;
/**
* Set weight vector for the labels
*
* @param w weights
*/
void set_weights(SGVector<float64_t>& w);
/**
* Get weight vector
*
* @return weight vector
*/
SGVector<float64_t> get_weights() const;
/** name **/
virtual const char* get_name() const { return "WeightedMajorityVote"; }
protected:
/**
* Weigthed majority voting implementation
*
* @param ensemble_result a vector of outputs in the ensemble for a given feature vector.
* @return the combined value
*/
virtual float64_t weighted_combine(const SGVector<float64_t>& ensemble_result) const;
/** the weight vector */
mutable SGVector<float64_t> m_weights;
private:
void init();
void register_parameters();
};
}
#endif /* _WEIGHTED_MAJORITY_VOTE_H_ */
|