Option to export the list of feature importance values to CSV

This commit is contained in:
Daniel Girardeau-Montaut
2019-03-29 10:34:17 +01:00
parent 5d58f25c1d
commit 0cdd0c8f1c
4 changed files with 48 additions and 3 deletions
+8 -1
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>400</width>
<height>500</height>
<height>550</height>
</rect>
</property>
<property name="windowTitle">
@@ -228,6 +228,13 @@
</column>
</widget>
</item>
<item>
<widget class="QToolButton" name="exportToolButton">
<property name="text">
<string>export</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
+2 -1
View File
@@ -207,7 +207,8 @@ bool Classifier::classify( const Feature::Source::Set& featureSources,
catch (const cv::Exception& cvex)
{
errorMessage = cvex.msg.c_str();
return false;
success = false;
break;
}
for (int fIndex = 0; fIndex < attributesPerSample; ++fIndex)
+37 -1
View File
@@ -20,6 +20,9 @@
//Qt
#include <QTableWidgetItem>
#include <QMessageBox>
#include <QFileDialog>
#include <QSettings>
#include <QTextStream>
//System
#include <assert.h>
@@ -36,6 +39,7 @@ Train3DMASCDialog::Train3DMASCDialog(QWidget* parent/*=nullptr*/)
connect(closePushButton, SIGNAL(clicked()), this, SLOT(onClose()));
connect(savePushButton, SIGNAL(clicked()), this, SLOT(onSave()));
connect(exportToolButton, SIGNAL(clicked()), this, SLOT(onExportResults()));
}
void Train3DMASCDialog::clearResults()
@@ -96,7 +100,7 @@ void Train3DMASCDialog::setFeatureImportance(QString featureName, float importan
{
if (tableWidget->item(index, 0)->text() == featureName)
{
QTableWidgetItem* item = tableWidget->item(static_cast<int>(index), FeatureImportanceColumn);
QTableWidgetItem* item = tableWidget->item(index, FeatureImportanceColumn);
item->setText(std::isnan(importance) ? QString() : QString::number(importance, 'f', 6));
return;
}
@@ -118,3 +122,35 @@ void Train3DMASCDialog::onSave()
saveRequested = true;
accept();
}
void Train3DMASCDialog::onExportResults()
{
QSettings settings;
settings.beginGroup("3DMASC");
QString outputPath = settings.value("FilePath", QCoreApplication::applicationDirPath()).toString();
QString outputFilename = QFileDialog::getSaveFileName(this, "Export feature importance matrix", outputPath, "*.csv");
if (outputFilename.isNull())
{
//process cancelled by the user
return;
}
settings.setValue("FilePath", QFileInfo(outputFilename).absolutePath());
settings.endGroup();
//save the file
QFile file(outputFilename);
if (!file.open(QFile::WriteOnly | QFile::Text))
{
QMessageBox::critical(this, "Error", "Failed to open file for writing: " + outputFilename);
return;
}
QTextStream stream(&file);
stream << "Feature;Importance" << endl;
for (int index = 0; index < tableWidget->rowCount(); ++index)
{
QString featureName = tableWidget->item(index, 0)->text();
QString importance = tableWidget->item(index, FeatureImportanceColumn)->text();
stream << featureName << ";" << importance << endl;
}
}
+1
View File
@@ -53,6 +53,7 @@ protected slots:
void onClose();
void onSave();
void onExportResults();
protected: //members