merged all the latest changes from 2.4 to trunk
This commit is contained in:
@@ -161,8 +161,21 @@ int CvMLData::read_csv(const char* filename)
|
||||
fclose(file);
|
||||
return -1;
|
||||
}
|
||||
for( ptr = buf; *ptr != '\0'; ptr++ )
|
||||
cols_count += (*ptr == delimiter);
|
||||
|
||||
ptr = buf;
|
||||
while( *ptr == ' ' )
|
||||
ptr++;
|
||||
for( ; *ptr != '\0'; )
|
||||
{
|
||||
if(*ptr == delimiter || *ptr == ' ')
|
||||
{
|
||||
cols_count++;
|
||||
ptr++;
|
||||
while( *ptr == ' ' ) ptr++;
|
||||
}
|
||||
else
|
||||
ptr++;
|
||||
}
|
||||
|
||||
if ( cols_count == 0)
|
||||
{
|
||||
@@ -606,7 +619,7 @@ void CvMLData::set_train_test_split( const CvTrainTestSplit * spl)
|
||||
CV_ERROR( CV_StsBadArg, "train samples count is not correct" );
|
||||
train_sample_portion = train_sample_portion <= FLT_EPSILON ||
|
||||
1 - train_sample_portion <= FLT_EPSILON ? 1 : train_sample_portion;
|
||||
train_sample_count = cvFloor( train_sample_portion * sample_count );
|
||||
train_sample_count = std::max(1, cvFloor( train_sample_portion * sample_count ));
|
||||
}
|
||||
|
||||
if ( train_sample_count == sample_count )
|
||||
@@ -625,8 +638,10 @@ void CvMLData::set_train_test_split( const CvTrainTestSplit * spl)
|
||||
for (int i = 0; i < sample_count; i++ )
|
||||
sample_idx[i] = i;
|
||||
train_sample_idx = cvCreateMatHeader( 1, train_sample_count, CV_32SC1 );
|
||||
test_sample_idx = cvCreateMatHeader( 1, test_sample_count, CV_32SC1 );
|
||||
*train_sample_idx = cvMat( 1, train_sample_count, CV_32SC1, &sample_idx[0] );
|
||||
|
||||
CV_Assert(test_sample_count > 0);
|
||||
test_sample_idx = cvCreateMatHeader( 1, test_sample_count, CV_32SC1 );
|
||||
*test_sample_idx = cvMat( 1, test_sample_count, CV_32SC1, &sample_idx[train_sample_count] );
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1517,6 +1517,11 @@ CvERTrees::~CvERTrees()
|
||||
{
|
||||
}
|
||||
|
||||
std::string CvERTrees::getName() const
|
||||
{
|
||||
return CV_TYPE_NAME_ML_ERTREES;
|
||||
}
|
||||
|
||||
bool CvERTrees::train( const CvMat* _train_data, int _tflag,
|
||||
const CvMat* _responses, const CvMat* _var_idx,
|
||||
const CvMat* _sample_idx, const CvMat* _var_type,
|
||||
|
@@ -246,6 +246,10 @@ CvRTrees::~CvRTrees()
|
||||
clear();
|
||||
}
|
||||
|
||||
std::string CvRTrees::getName() const
|
||||
{
|
||||
return CV_TYPE_NAME_ML_RTREES;
|
||||
}
|
||||
|
||||
CvMat* CvRTrees::get_active_var_mask()
|
||||
{
|
||||
@@ -726,7 +730,8 @@ void CvRTrees::write( CvFileStorage* fs, const char* name ) const
|
||||
if( ntrees < 1 || !trees || nsamples < 1 )
|
||||
CV_Error( CV_StsBadArg, "Invalid CvRTrees object" );
|
||||
|
||||
cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_RTREES );
|
||||
std::string modelNodeName = this->getName();
|
||||
cvStartWriteStruct( fs, name, CV_NODE_MAP, modelNodeName.c_str() );
|
||||
|
||||
cvWriteInt( fs, "nclasses", nclasses );
|
||||
cvWriteInt( fs, "nsamples", nsamples );
|
||||
|
Reference in New Issue
Block a user