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

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):
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • greatofdream 2020-01-12 21:14

    把类的其他部分也贴上来,看这部分代码好像没问题

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题