float()参数必须是字符串或数字,而不是'map'

时间:2018-04-06 07:37:56

标签: python

enter image description here

代码之间的

有以下代码:

def regTreeEval(model, inDat):
    if model is not None:
        return float(model)

def modelTreeEval(model, inDat):

    n = shape(inDat)[1]
    X = mat(ones((1, n+1)))
    X[:, 1: n+1] = inDat
    # print X, model
    xmodel = X*model
    if xmodel is not None:
        return float(X * model)

1 个答案:

答案 0 :(得分:0)

<pre><code>def modelErr(dataSet):
    ws, X, Y = linearSolve(dataSet)
    yHat = X * ws
    # print corrcoef(yHat, Y, rowvar=0)
    return sum(power(Y - yHat, 2))

def linearSolve(dataSet):
    m,n = shape(dataSet)
    X = mat(ones((m,n)))
    Y = mat(ones((m,1)))
    X[:,1:n] = dataSet[:,0:n-1]
    Y = dataSet[:,-1]
    xTx = X.T*X
    if linalg.det(xTx) ==0.0:
        raiseNameError("This matrix is singular, cannot do inverse")    
    ws = X.T*X.I*(X.T*Y)
    return ws,X,Y` def modelErr(dataSet):
    ws, X, Y = linearSolve(dataSet)
    yHat = X * ws
    # print corrcoef(yHat, Y, rowvar=0)
    return sum(power(Y - yHat, 2))

def linearSolve(dataSet):
    m,n = shape(dataSet)
    X = mat(ones((m,n)))
    Y = mat(ones((m,1)))
    X[:,1:n] = dataSet[:,0:n-1]
    Y = dataSet[:,-1]
    xTx = X.T*X
    if linalg.det(xTx) ==0.0:
        raiseNameError("This matrix is singular, cannot do inverse")    
    ws = X.T*X.I*(X.T*Y)
    return ws,X,Y

<pre><code>def modelTreeEval(model,inDat):
    n=shape(inDat)[1]
    X=mat(ones((1,n+1)))
    X[:,1:n+1] = inDat
    print('X',X,'\n','model',model)
    return float(X*model)
    ---------------------------------------------------------------------------
<pre><code>
TypeError                                 Traceback (most recent call last)
<ipython-input-50-c482daea3463> in <module>()
    116     myDat = loadDataSet('F:/data4.txt')
    117     myMat = mat(myDat)
--> 118     myTree = createTree(myMat, modelLeaf, modelErr)
    119     print(myTree)
    120 

<ipython-input-42-60c716a5beb4> in createTree(dataSet, leafType, errType, ops)
     12     """
     13     # 
---> 14     feat,val = chooseBestSplit(dataSet,leafType,errType,ops)
     15     # 
     16     '''

<ipython-input-41-4305f5a748bb> in chooseBestSplit(dataSet, leafType, errType, ops)
     76     s = set(dataSet[:,-1].T.tolist()[0])
     77     if len(s) ==1:
---> 78         return None,leafType(dataSet)
     79     m,n = shape(dataSet)
     80     # 

<ipython-input-43-6a297b0e048d> in modelLeaf(dataSet)
      9         ###
     10     """
---> 11     ws,X,Y = linearSolve(dataSet)
     12     return ws
     13 

<ipython-input-43-6a297b0e048d> in linearSolve(dataSet)
     42     X = mat(ones((m,n)))
     43     Y = mat(ones((m,1)))
---> 44     X[:,1:n] = dataSet[:,0:n-1]
     45     Y = dataSet[:,-1]
     46     xTx = X.T*X

TypeError: float() argument must be a string or a number, not 'map'