|
STK++ 1.0
|
00001 /*--------------------------------------------------------------------*/ 00002 /* Copyright (C) 2004-2007 Serge Iovleff 00003 00004 This program is free software; you can redistribute it and/or modify 00005 it under the terms of the GNU Lesser General Public License as 00006 published by the Free Software Foundation; either version 2 of the 00007 License, or (at your option) any later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU Lesser General Public License for more details. 00013 00014 You should have received a copy of the GNU Lesser General Public 00015 License along with this program; if not, write to the 00016 Free Software Foundation, Inc., 00017 59 Temple Place, 00018 Suite 330, 00019 Boston, MA 02111-1307 00020 USA 00021 00022 Contact : Serge.Iovleff@stkpp.org 00023 */ 00024 00025 /* 00026 * Project: stkpp::AAModels 00027 * created on: 17 avr. 2010 00028 * Purpose: Abstract class for the computation of the Index in the 00029 * AAM models. 00030 * Author: iovleff, serge.iovleff@stkpp.org 00031 **/ 00032 00037 #include "../include/STK_ILinearReduct.h" 00038 #include "../../Algebra/include/STK_LinAlgebra3D.h" 00039 00040 namespace STK 00041 { 00042 /* 00043 * Constructor. 00044 * @param data the input data set 00045 */ 00046 ILinearReduct::ILinearReduct( Matrix const& data) : IReduct(data) 00047 {} 00048 00049 /* 00050 * Destructor 00051 */ 00052 ILinearReduct::~ILinearReduct() 00053 {} 00054 00055 /* Compute the Index. 00056 * @param nbAxis number of Axis to compute 00057 */ 00058 bool ILinearReduct::run() 00059 { 00060 try 00061 { 00062 // maximize the Index and compute the axis 00063 maximizeIndex(); 00064 // project data 00065 projection(); 00066 00067 } catch (Exception error) 00068 { 00069 msg_error_ = error.error(); 00070 return false; 00071 } 00072 return true; 00073 } 00074 00075 /* 00076 * Compute the weighted index. 00077 * @param weights the weights to used 00078 * @param nbAxis number of Axis to compute 00079 */ 00080 bool ILinearReduct::run( Vector const& weights) 00081 { 00082 try 00083 { 00084 // maximize the Index and compute the axis 00085 maximizeIndex(weights); 00086 // project data 00087 projection(); 00088 00089 } catch (Exception error) 00090 { 00091 msg_error_ = error.error(); 00092 return false; 00093 } 00094 return true; 00095 } 00096 00098 void ILinearReduct::projection() 00099 { 00100 // free allocated memory 00101 if (!p_reduced_) p_reduced_ = new Matrix; 00102 // compute matrix multiplication 00103 mult( *p_y_, axis_, *p_reduced_); 00104 } 00105 00106 } // namespace STK 00107