Result Type classification

use commonly:
1: dispatcher
2: redirect
3: chain
4: redirectAction
param 1: actionName
param 2: namespace
5: plainText
param 1: location
param 2: charset
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误说明在训练SVM模型时,响应变量(即标签)不是分类变量,而是连续变量或其他类型的变量。因此,需要将响应变量转换为分类变量才能训练SVM模型。 为了解决这个问题,您需要将标签变量转换为分类变量。您可以使用OpenCV的ml.TrainData()函数来创建训练数据对象,并将响应变量的类型指定为CV_VAR_CATEGORICAL。具体来说,您可以在创建训练数据对象时指定varType参数,如下所示: ```python train_data = cv.ml.TrainData_create(data, cv.ml.ROW_SAMPLE, label) train_data.setVarType(np.array([cv.ml.VAR_NUMERICAL, cv.ml.VAR_NUMERICAL], dtype=np.uint8)) ``` 在这个例子中,我们将响应变量的类型设置为CV_VAR_CATEGORICAL,将特征变量的类型设置为CV_VAR_NUMERICAL,因为特征变量是连续变量。 下面是修改后的代码: ```python import numpy as np import cv2 as cv import matplotlib.pyplot as plt a = np.random.randint(90,96,size=(20,2)).astype(np.float32) b = np.random.randint(95,101,size=(20,2)).astype(np.float32) data = np.vstack((a,b)) data = np.array(data,dtype=np.float32) a_label = np.zeros((20,1)) b_label = np.ones((20,1)) label = np.vstack((a_label,b_label)) label = np.array(label,dtype=np.float32) train_data = cv.ml.TrainData_create(data, cv.ml.ROW_SAMPLE, label) train_data.setVarType(np.array([cv.ml.VAR_NUMERICAL, cv.ml.VAR_NUMERICAL], dtype=np.uint8)) svm = cv.ml.SVM_create() svm.setType(cv.ml.SVM_C_SVC) svm.setKernel(cv.ml.SVM_LINEAR) svm.setC(0.01) result = svm.train(train_data) test = np.array([[93.92, 96.97]], dtype=np.float32) p1, p2 = svm.predict(test) plt.scatter(a[:,0],a[:,1],s=80,c="g",marker="o") plt.scatter(b[:,0],b[:,1],s=80,c="b",marker="s") plt.scatter(test[:,0],test[:,1],s=80,c="r",marker="*") plt.show() print(p1, p2) ``` 希望这个修改可以帮助您解决问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值