鱼C论坛

 找回密码
 立即注册
查看: 1235|回复: 6

python遇到的问题求助

[复制链接]
发表于 2022-4-30 10:31:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

错误提示:
[i]
Traceback (most recent call last):
  File "D:/code/pycharm/dingwei.py", line 400, in <module>
    svm.train()
  File "D:/code/pycharm/dingwei.py", line 241, in train
    if self.isSatisfyKKT(i) is not True:
  File "D:/code/pycharm/dingwei.py", line 112, in isSatisfyKKT
    if (math.fabs(self.alpha) < self.toler) and (yi * gxi >= 1):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

错误相关代码:
def isSatisfyKKT(self, i):
      
        gxi =self.calc_gxi(i)
        yi = self.trainLabelMat[i]

       if (math.fabs(self.alpha[i]) < self.toler) and (yi * gxi >= 1):
            return True
        
        elif (math.fabs(self.alpha[i] - self.C) < self.toler) and (yi * gxi <= 1):
            return True
      
        elif (self.alpha[i] > -self.toler) and (self.alpha < (self.C + self.toler)) \
                and (math.fabs(yi * gxi - 1) < self.toler):
            return True
        else:
            return False


while (iterStep < iter) and (parameterChanged > 0):
            #打印当前迭代轮数
            print('iter:%d:%d'%( iterStep, iter))
            #迭代步数加1
            iterStep += 1
            #新的一轮将参数改变标志位重新置0
            parameterChanged = 0

            #大循环遍历所有样本,用于找SMO中第一个变量
            for i in range(self.m):
                #查看第一个遍历是否满足KKT条件,如果不满足则作为SMO中第一个变量从而进行优化

                     if self.isSatisfyKKT(i) is not True:
                    #如果下标为i的α不满足KKT条件,则进行优化

                    #第一个变量α的下标i已经确定,接下来按照“7.4.2 变量的选择方法”第二步
                    #选择变量2。由于变量2的选择中涉及到|E1 - E2|,因此先计算E1
                    E1 = self.calcEi(i)

                    #选择第2个变量
                    E2, j = self.getAlphaJ(E1, i)
[/i][/i][/i][/i]



if __name__ == '__main__':
    start = time.time()

    # 获取训练集及标签
    print('start read transSet')
    trainDataList, trainLabelList = loadData('train.txt')

    # 获取测试集及标签
    print('start read testSet')
    testDataList, testLabelList = loadData('test.txt')

    #初始化SVM类
    print('start init SVM')
    svm = SVM(trainDataList[:1000], trainLabelList[:1000], 10, 200, 0.001)

    # 开始训练
    print('start to train')
   
svm.train()

   
# 开始测试
    print('start to test')
    accuracy = svm.test(testDataList[:
100, testLabelList[:100])
   
print('the accuracy is:%d'%(accuracy * 100), '%')

   
# 打印时间
    print('time span:', time.time() - start)
[i][i][/i][/i]
[i][i][/i][/i]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-30 13:12:14 | 显示全部楼层

回帖奖励 +5 鱼币

把格式调整好,while很突兀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-1 00:39:49 | 显示全部楼层

回帖奖励 +5 鱼币

666666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-1 09:07:05 | 显示全部楼层

回帖奖励 +5 鱼币

来学习一下!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-1 22:20:14 | 显示全部楼层

回帖奖励 +5 鱼币

来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-1 22:54:08 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-1 23:36:21 | 显示全部楼层
新手路过!看的一脸懵逼!还需努力跟上大佬的节奏!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表