SHOGUN
v1.1.0
|
00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of the GNU General Public License as published by 00004 * the Free Software Foundation; either version 3 of the License, or 00005 * (at your option) any later version. 00006 * 00007 * Written (W) 1999-2008 Soeren Sonnenburg 00008 * Written (W) 1999-2008 Gunnar Raetsch 00009 * Copyright (C) 1999-2008 Fraunhofer Institute FIRST and Max-Planck-Society 00010 */ 00011 00012 #include <shogun/ui/SGInterface.h> 00013 #include <shogun/ui/GUIPluginEstimate.h> 00014 00015 #include <shogun/lib/config.h> 00016 #include <shogun/io/SGIO.h> 00017 #include <shogun/features/StringFeatures.h> 00018 00019 using namespace shogun; 00020 00021 CGUIPluginEstimate::CGUIPluginEstimate(CSGInterface* ui_) 00022 : CSGObject(), ui(ui_), estimator(NULL), 00023 pos_pseudo(1e-10), neg_pseudo(1e-10) 00024 { 00025 } 00026 00027 CGUIPluginEstimate::~CGUIPluginEstimate() 00028 { 00029 SG_UNREF(estimator); 00030 } 00031 00032 bool CGUIPluginEstimate::new_estimator(float64_t pos, float64_t neg) 00033 { 00034 SG_UNREF(estimator); 00035 estimator=new CPluginEstimate(pos, neg); 00036 SG_REF(estimator); 00037 00038 if (!estimator) 00039 SG_ERROR("Could not create new plugin estimator, pos_pseudo %f, neg_pseudo %f\n", pos_pseudo, neg_pseudo); 00040 else 00041 SG_INFO("Created new plugin estimator (%p), pos_pseudo %f, neg_pseudo %f\n", estimator, pos_pseudo, neg_pseudo); 00042 00043 return true; 00044 } 00045 00046 bool CGUIPluginEstimate::train() 00047 { 00048 CLabels* trainlabels=ui->ui_labels->get_train_labels(); 00049 CStringFeatures<uint16_t>* trainfeatures=(CStringFeatures<uint16_t>*) ui-> 00050 ui_features->get_train_features(); 00051 bool result=false; 00052 00053 if (!trainlabels) 00054 SG_ERROR("No labels available.\n"); 00055 00056 if (!trainfeatures) 00057 SG_ERROR("No features available.\n"); 00058 00059 ASSERT(trainfeatures->get_feature_type()==F_WORD); 00060 00061 estimator->set_features(trainfeatures); 00062 estimator->set_labels(trainlabels); 00063 if (estimator) 00064 result=estimator->train(); 00065 else 00066 SG_ERROR("No estimator available.\n"); 00067 00068 return result; 00069 } 00070 00071 bool CGUIPluginEstimate::load(char* param) 00072 { 00073 bool result=false; 00074 return result; 00075 } 00076 00077 bool CGUIPluginEstimate::save(char* param) 00078 { 00079 bool result=false; 00080 return result; 00081 } 00082 00083 CLabels* CGUIPluginEstimate::apply() 00084 { 00085 CFeatures* testfeatures=ui->ui_features->get_test_features(); 00086 00087 if (!estimator) 00088 { 00089 SG_ERROR( "no estimator available") ; 00090 return 0; 00091 } 00092 00093 if (!testfeatures) 00094 { 00095 SG_ERROR( "no test features available") ; 00096 return 0; 00097 } 00098 00099 estimator->set_features((CStringFeatures<uint16_t>*) testfeatures); 00100 00101 return estimator->apply(); 00102 } 00103 00104 float64_t CGUIPluginEstimate::apply(int32_t idx) 00105 { 00106 CFeatures* testfeatures=ui->ui_features->get_test_features(); 00107 00108 if (!estimator) 00109 { 00110 SG_ERROR( "no estimator available") ; 00111 return 0; 00112 } 00113 00114 if (!testfeatures) 00115 { 00116 SG_ERROR( "no test features available") ; 00117 return 0; 00118 } 00119 00120 estimator->set_features((CStringFeatures<uint16_t>*) testfeatures); 00121 00122 return estimator->apply(idx); 00123 }