用svm做回归预测,为什么预测值都是一样的?

载入数据train_x,train_y,test_x,test_y后,用下面两条命令做回归预测model = svmtrain(train_y,train_x,'-s 3 -t 2 -c 15000 -g 128 -p 0.001' );[predict_y,pmse,dec_value] = svmpredict(test_y,test_x,model);结果发现预测值predict_y里所有值都一样,平方相关系数也有问题Squared correlation coefficient = 1.#INF (regression)。后来加了数据的归一化[train_x,test_x,ps] = scaleForSVM(train_x,test_x,0,1) [train_y,test_y,ps] = scaleForSVM(train_y,test_y,0,1)平方相关系数算出值了,但是predict_y里仍然所有值都一样?!直接用faruto封装好的[predict_Y,mse,r] = SVR(train_y,train_x,test_y,test_x,Method_option);则没有上述问题。大伙给支支招啊!

你看看支持向量机的书或者faruto的教程,预测值一样的话肯定是你选择的参数有问题,model = svmtrain(train_y,train_x,'-s 3 -t 2 -c 15000 -g 128 -p 0.001' );
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-31
-p 0.001'太小了,选成0.1就行了
第2个回答  2020-07-01
第一,要先看你建立的回归方程中各个自变量是否都具有显著预测作用;第二,你的回归方程预测效果如何,也就是决定系数R方有多大,如果预测效果很差,用方程计算出来的值和原始值肯定出入很大。除非R方等于1,否则不可能用方程预测出来的值都和原始值完全一样。
第3个回答  2020-08-31
我估计你是这句话有问题
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

你可能在最后加了一个random_state = 0
把这个去掉就行
第4个回答  2020-06-17
我发现我的问题是gamma那个参数设置的太大了,在默认参数附近设置就好了
相似回答