1. 程式人生 > >ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料集+七種{1~7}深度的決策樹{依次進行10交叉驗證})

ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料集+七種{1~7}深度的決策樹{依次進行10交叉驗證})

ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料集+七種{1~7}深度的決策樹{依次進行10交叉驗證})

輸出結果

設計思路

 

核心程式碼

for iDepth in depthList:

    for ixval in range(nxval):

        idxTest = [a for a in range(nrow) if a%nxval == ixval%nxval]
        idxTrain = [a for a in range(nrow) if a%nxval != ixval%nxval]

        xTrain = [x[r] for r in idxTrain]
        xTest = [x[r] for r in idxTest]
        yTrain = [y[r] for r in idxTrain]
        yTest = [y[r] for r in idxTest]

        treeModel = DecisionTreeRegressor(max_depth=iDepth)
        treeModel.fit(xTrain, yTrain)

        treePrediction = treeModel.predict(xTest)
        error = [yTest[r] - treePrediction[r] for r in range(len(yTest))]

        if ixval == 0:
            oosErrors = sum([e * e for e in error])
        else:

            oosErrors += sum([e * e for e in error])

    mse = oosErrors/nrow
    xvalMSE.append(mse)