teresia173 2020-01-12 20:26 采纳率: 100%
浏览 704
已采纳

python类内部的方法调用

class Adaboosting中demo_train方法中要调用同个类中的loadDataSet方法,但是根本没进到程序之中,求教是什么原因,谢谢大佬们了
demo_train的代码如下

        def demo_train(self):
                print("已进入到了内部函数")
                print(self.model)
                if self.model==None:
                        self.model="test.txt"
                dataArr, LabelArr = self.loadDataSet(self.model)
                weakClassArr, aggClassEst = Adaboosting.adaBoostTrainDS(dataArr, LabelArr)
                # from my_adaboosting_SVM_ROC import adaClassify
                print("正在训练模型...")
                predictions = self.adaClassify(dataArr, weakClassArr)
                errArr = np.mat(np.ones((len(dataArr), 1)))
                number=1-float(errArr[predictions != np.mat(LabelArr).T].sum() / len(dataArr) * 100)
                print('训练集的错误率:%.3f%%' % float(errArr[predictions != np.mat(LabelArr).T].sum() / len(dataArr) * 100))
                # print("33333333")
                print(self.train)
                if self.train==None:
                        self.train="test6.txt"
                # print("444444444")
                print(self.train)
                # train = "test6.txt"
                testArr, testLabelArr = self.loadDataSet(self.train)
                predictions = self.adaClassify(testArr, weakClassArr)
                print(predictions)
                errArr = np.mat(np.ones((len(testArr), 1)))
                number1=1-float(errArr[predictions != np.mat(testLabelArr).T].sum() / len(testArr) * 100)
                print('测试集的错误率:%.3f%%' % float(errArr[predictions != np.mat(testLabelArr).T].sum() / len(testArr) * 100))
                from my_adaboosting_SVM_ROC import plotROC
                plotROC(aggClassEst.T, LabelArr)
                return number ,number1

loadDataSet的代码如下

        # 导入数据
        def loadDataSet(fileName):
                print("hhhhhhhhhhhhhhhhh")
                numFeat = len((open(fileName).readline().split('\t')))
                dataMat = [];
                labelMat = []
                fr = open(fileName)
                for line in fr.readlines():
                        lineArr = []
                        curLine = line.strip().split('\t')
                        for i in range(numFeat - 1):
                                lineArr.append(float(curLine[i]))
                        dataMat.append(lineArr)
                        labelMat.append(float(curLine[-1]))

                return dataMat, labelMat

运行结果:
图片说明

  • 写回答

2条回答 默认 最新

  • wrenthomas 2020-01-13 14:20
    关注
    def loadDataSet(self,fileName):
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 请教一下c语言的代码里有一个地方不懂
  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档