Exemple #1
0
int FeatureSet::Normalize(Feature& feature)
{
	double squareLength = 0;
	for (map<int, double>::iterator it = feature.begin(); it != feature.end(); it++)
	{
		squareLength += (it->second) * (it->second);
	}
	double length = sqrt(squareLength);
	for (map<int, double>::iterator it = feature.begin(); it != feature.end(); it++)
	{
		it->second /= length;
	}
	return 0;
}
void ObjectClassificator::addFeature(Feature& feature)
{
	newObject(feature);
	for (FeatureMap::const_iterator i = feature.begin(); i != feature.end();
				++i)
	{
		addFeature(i->first, i->second);
	}
}
Exemple #3
0
int FeatureSet::SaveFeature(Feature& feature, const char* const fileName)
{
	FILE* outFile = fopen(fileName, "wb");
	int rtn = Write(outFile, (int)feature.size());
	CHECK_RTN(rtn);
	for (Feature::iterator it = feature.begin(); it != feature.end(); ++it)
	{
		rtn = Write(outFile, it->first);
		CHECK_RTN(rtn);
		rtn = Write(outFile, it->second);
		CHECK_RTN(rtn);
	}
	fclose(outFile);
	return 0;
}
// Z = XY; X:n1*d1  Y:d1*K 
void matrix_mul( double** Z,    vector<Feature*>* X, double* Y, int K){
	
	Feature* fea;
	Feature::iterator it;
	
	#pragma omp parallel for
	for(int i=0;i<X->size();i++){
		fea = X->at(i);
		for(int k=0;k<K;k++)
			Z[i][k] = 0.0;
		for(it=fea->begin();it!=fea->end();it++){
			for(int k=0;k<K;k++)
				Z[i][k] += it->second* Y[it->first*K + k];
		}
	}
}