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条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?