我在用libsvm做回归的时候,发现预测得到的值都是一样的,很奇怪。
所用的libsvm是官方版本3.23
数据如下:
代码如下,发现得到的teValue 和testValue 是一样的,是我的参数选择有问题吗?
void InitializeParam()
{
param.kernel_type = RBF;
param.svm_type = EPSILON_SVR;
param.gamma = 1;
param.C = 30;
param.shrinking = 0;
param.eps = 0.1;
param.cache_size = 300;
}
model = svm_train(&prob, ¶m);
double *dec_values = Malloc(double, 1);
svm_node *test = Malloc(struct svm_node, 3);
for (int i = 0; i < 2; i++)
{
test[i].index = i + 1;
test[i].value = 1.0;
}
test[3].index = -1;
test[3].value = 0;
double testValue = svm_predict_values(model, test, dec_values);
double *dec_values2 = Malloc(double, 1);
svm_node *te = Malloc(struct svm_node, 3);
for (int i = 0; i < 2; i++)
{
te[i].index = i + 1;
te[i].value = 1.5;
}
te[3].index = -1;
te[3].value = 99999.9;
double teValue = svm_predict_values(model, te, dec_values2);