diff --git a/src/shogun/kernel/string/WeightedDegreePositionStringKernel.cpp b/src/shogun/kernel/string/WeightedDegreePositionStringKernel.cpp index 308faf375e0..1a52bff7e84 100644 --- a/src/shogun/kernel/string/WeightedDegreePositionStringKernel.cpp +++ b/src/shogun/kernel/string/WeightedDegreePositionStringKernel.cpp @@ -74,7 +74,7 @@ CWeightedDegreePositionStringKernel::CWeightedDegreePositionStringKernel( } CWeightedDegreePositionStringKernel::CWeightedDegreePositionStringKernel( - int32_t size, float64_t* w, int32_t d, int32_t mm, int32_t* s, int32_t sl, + int32_t size, SGVector w, int32_t d, int32_t mm, SGVector s, int32_t mkls) : CStringKernel(size) { @@ -94,7 +94,7 @@ CWeightedDegreePositionStringKernel::CWeightedDegreePositionStringKernel( for (int32_t i=0; i(SGVector::clone_vector(s,sl), sl)); + set_shifts(s); } CWeightedDegreePositionStringKernel::CWeightedDegreePositionStringKernel( diff --git a/src/shogun/kernel/string/WeightedDegreePositionStringKernel.h b/src/shogun/kernel/string/WeightedDegreePositionStringKernel.h index 43299177621..ab73521212c 100644 --- a/src/shogun/kernel/string/WeightedDegreePositionStringKernel.h +++ b/src/shogun/kernel/string/WeightedDegreePositionStringKernel.h @@ -73,8 +73,8 @@ class CWeightedDegreePositionStringKernel: public CStringKernel * @param mkl_stepsize MKL stepsize */ CWeightedDegreePositionStringKernel( - int32_t size, float64_t* weights, int32_t degree, - int32_t max_mismatch, int32_t* shift, int32_t shift_len, + int32_t size, SGVector weights, int32_t degree, + int32_t max_mismatch, SGVector shifts, int32_t mkl_stepsize=1); /** constructor diff --git a/src/shogun/ui/GUIKernel.cpp b/src/shogun/ui/GUIKernel.cpp index fef0614ecb2..12db549deb9 100644 --- a/src/shogun/ui/GUIKernel.cpp +++ b/src/shogun/ui/GUIKernel.cpp @@ -297,7 +297,7 @@ CKernel* CGUIKernel::create_weighteddegreepositionstring( float64_t* weights=get_weights(order, max_mismatch); - CKernel* kern=new CWeightedDegreePositionStringKernel(size, weights, order, max_mismatch, shifts, length); + CKernel* kern=new CWeightedDegreePositionStringKernel(size, SGVector(weights, order*(1+max_mismatch)), order, max_mismatch, SGVector(shifts, length).clone()); if (!kern) SG_ERROR("Couldn't create WeightedDegreePositionStringKernel with size %d, order %d, max_mismatch %d, length %d, center %d, step %f.\n", size, order, max_mismatch, length, center, step) else @@ -314,7 +314,7 @@ CKernel* CGUIKernel::create_weighteddegreepositionstring3( { float64_t* weights=get_weights(order, max_mismatch); - CKernel* kern=new CWeightedDegreePositionStringKernel(size, weights, order, max_mismatch, shifts, length, mkl_stepsize); + CKernel* kern=new CWeightedDegreePositionStringKernel(size, SGVector(weights, order*(1+max_mismatch)), order, max_mismatch, SGVector(shifts, length).clone(), mkl_stepsize); kern->set_normalizer(new CIdentityKernelNormalizer()); SG_DEBUG("created WeightedDegreePositionStringKernel (%p) with size %d, order %d, max_mismatch %d, length %d and position_weights (MKL stepsize: %d).\n", kern, size, order, max_mismatch, length, mkl_stepsize) @@ -338,7 +338,7 @@ CKernel* CGUIKernel::create_weighteddegreepositionstring2( { float64_t* weights=get_weights(order, max_mismatch); - CKernel* kern=new CWeightedDegreePositionStringKernel(size, weights, order, max_mismatch, shifts, length); + CKernel* kern=new CWeightedDegreePositionStringKernel(size, SGVector(weights, order*(1+max_mismatch)), order, max_mismatch, SGVector(shifts, length).clone()); if (!use_normalization) kern->set_normalizer(new CIdentityKernelNormalizer());