Halcon学習のK最近隣接分類

4551 ワード

void testKNearestNeighbors()
{
    //  K      
    //    :NumDim        
    HTuple NumDim = 2;
    HClassKnn classKnn;
    classKnn.CreateClassKnn(NumDim);

    //       k      
    //    :Features       ,ClassID     
    HTuple Features, ClassID;
    ClassID = 0;
    Features = HTuple(1).Append(1);
    classKnn.AddSampleClassKnn(Features, ClassID);

    ClassID = 1;
    Features = HTuple(-1).Append(-1);
    classKnn.AddSampleClassKnn(Features, ClassID);

    ClassID = 2;
    Features = HTuple(1).Append(-1);
    classKnn.AddSampleClassKnn(Features, ClassID);
    //    k          
    //    :GenParamNames  k             , GenParamValues  k            
    HTuple GenParamNames = "num_trees", GenParamValues=5;
    classKnn.TrainClassKnn(GenParamNames, GenParamValues);

    //  k           
    //    :GenParamNames  k            ,  GenParamValues  k           
    HTuple GenParamNames1 = "k", GenParamValues1 = 1;
    classKnn.SetParamsClassKnn(GenParamNames1, GenParamValues1);


    //                  
    //    :Features          ,Result    ,Rating    
    HTuple Features1=HTuple(2).Append(-2), Result1, Rating1;
    Result1 = classKnn.ClassifyClassKnn(Features1, &Rating1);
    cout <<"           : " <cout << "     : " << (double)Rating1 << endl;

    //   k              
    classKnn.WriteClassKnn("classKnn.gnc");
    HClassKnn fileclassKnn;
    fileclassKnn.ReadClassKnn("classKnn.gnc");

    //        
    HSerializedItem item = classKnn.SerializeClassKnn();
    HClassKnn serialclassKnn;
    serialclassKnn.DeserializeClassKnn(item);

    //  k           
    HClassTrainData trainData;
    trainData.GetClassTrainDataKnn(classKnn);

    //  k         
    //    : GenParamNames          , GenParamValues          
    HTuple GenParamNames2 = "method", GenParamValues2;
    GenParamValues2 = classKnn.GetParamsClassKnn(GenParamNames2);
    cout << "       : " << (HString)GenParamValues2 << endl;

    //   k                
    //    : IndexSample       , Features         ,ClassID         
    HTuple IndexSample3 = 2, Features3, ClassID3;
    Features3=classKnn.GetSampleClassKnn(IndexSample3, &ClassID3);
    cout << "         " << (Hlong)ClassID3 << endl;
    cout << "         : " << endl;
    for (int i = 0; icout << (double)Features3[i] << endl;
    }

    //     k          
    Hlong NumSamples = classKnn.GetSampleNumClassKnn();
    cout << "      : " << NumSamples << endl;

}