TypeError:只能将length-1数组转换为Python scalars Dot Product

时间:2018-04-04 18:58:11

标签: python pandas numpy machine-learning gradient-descent

为我的最后一年项目编写此算法。调试了一些,但坚持这一点。尝试更改浮动方法,但没有真正改变。

----> 8         hypothesis = np.dot(float(x), theta)
TypeError: only length-1 arrays can be converted to Python scalars

整个代码 -

import numpy as np
import random
import pandas as pd

def gradientDescent(x, y, theta, alpha, m, numIterations):
    xTrans = x.transpose()
    for i in range(0, numIterations):
        hypothesis = np.dot(x, theta)
        loss = hypothesis - y
        # avg cost per example (the 2 in 2*m doesn't really matter here.
        # But to be consistent with the gradient, I include it)
        cost = np.sum(loss ** 2) / (2 * m)
        print("Iteration %d | Cost: %f" % (i, cost))
        # avg gradient per example
        gradient = np.dot(xTrans, loss) / m
        # update
        theta = theta - alpha * gradient
    return theta

df = pd.read_csv(r'C:\Users\WELCOME\Desktop\FinalYearPaper\ConferencePaper\NewTrain.csv', 'rU', delimiter=",",header=None)

x = df.loc[:,'0':'2'].as_matrix()
y = df[3].as_matrix()

print(x)
print(y)

m, n = np.shape(x)
numIterations= 100
alpha = 0.001
theta = np.ones(n)
theta = gradientDescent(x, y, theta, alpha, m, numIterations)
print(theta)

1 个答案:

答案 0 :(得分:0)

null是一个numpy数组,Python的内置x函数无法处理。尝试:

float