当前位置:  开发笔记 > 编程语言 > 正文

Sklearn SVM:SVR和SVC,为每个输入获得相同的预测

如何解决《SklearnSVM:SVR和SVC,为每个输入获得相同的预测》经验,为你挑选了1个好方法。

这是代码的粘贴:SVM示例代码

我查看了这个问题的几个其他答案......似乎问题的这个特定迭代有点不同.

首先,我的输入被标准化,我每点有五个输入.这些值都是合理的大小(健康的0.5s和0.7s等 - 很少接近零或接近1个数字).

我有大约70个输入对应于他们的70 y输入.y输入也被标准化(它们是每个时间步之后我的函数的百分比变化).

我初始化我的SVR(和SVC),训练它们,然后用30个样本外输入测试它们......并获得每个输入的完全相同的预测(并且输入正在以合理的量变化 - 0.3,0.6 ,0.5等).我认为分类器(至少)会有一些区别......

这是我得到的代码:

# train svr

my_svr = svm.SVR()
my_svr.fit(x_training,y_trainr)

# train svc

my_svc = svm.SVC()
my_svc.fit(x_training,y_trainc)


# predict regression

p_regression = my_svr.predict(x_test)
p_r_series = pd.Series(index=y_testing.index,data=p_regression)

# predict classification

p_classification = my_svc.predict(x_test)
p_c_series = pd.Series(index=y_testing_classification.index,data=p_classification)

以下是我输入的示例:

x_training = [[  1.52068627e-04   8.66880301e-01   5.08504362e-01   9.48082047e-01
7.01156322e-01],
              [  6.68130520e-01   9.07506250e-01   5.07182647e-01   8.11290634e-01
6.67756208e-01],
              ... x 70 ]

y_trainr = [-0.00723209 -0.01788079  0.00741741 -0.00200805 -0.00737761  0.00202704 ...]

y_trainc = [ 0.  0.  1.  0.  0.  1.  1.  0. ...]

并且x_test矩阵(5x30)x_training在输入的幅度和方差方面类似于矩阵......对于y_testry_testc.

目前,所有测试的预测完全相同(回归为0.00596,分类为1).

如何让SVR和SVC函数吐出相关的预测?或者至少基于输入的不同预测......

至少,分类器应该能够做出选择.我的意思是,即使我没有为回归提供足够的维度......



1> David Maust..:

尝试从默认值增加C.看来你是不合适的.

my_svc = svm.SVC(probability=True, C=1000)
my_svc.fit(x_training,y_trainc)

p_classification = my_svc.predict(x_test)

p_classification然后变成:

array([ 1.,  0.,  1.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,
        1.,  0.,  0.,  0.,  0.,  0.,  1.,  1.,  0.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.])

对于这种SVR情况,您还需要减少epsilon.

my_svr = svm.SVR(C=1000, epsilon=0.0001)
my_svr.fit(x_training,y_trainr)

p_regression = my_svr.predict(x_test)

p_regression然后变成:

array([-0.00430622,  0.00022762,  0.00595002, -0.02037147, -0.0003767 ,
        0.00212401,  0.00018503, -0.00245148, -0.00109994, -0.00728342,
       -0.00603862, -0.00321413, -0.00922082, -0.00129351,  0.00086844,
        0.00380351, -0.0209799 ,  0.00495681,  0.0070937 ,  0.00525708,
       -0.00777854,  0.00346639,  0.0070703 , -0.00082952,  0.00246366,
        0.03007465,  0.01172834,  0.0135077 ,  0.00883518,  0.00399232])

您应该使用交叉验证调整C参数,以便能够在最重要的指标上发挥最佳性能.您可能希望看一下GridSearchCV帮助您这样做.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有