Я хочу вычислить градиентный спуск с образцами x [100,4] и меткой y. когда я выполняю код, столкнулся с этой ошибкой - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в python, и когда я хочу выполнить этот код, сталкиваюсь с этой ошибкой. кто-нибудь может мне помочь? для вычисления градиентного спуска с выборками x [100,4] и y


#Task 2
m,n = np.shape(x)
iteration = 100
k = 20
etha = 0.1
landa = 1
theta = np.zeros(n)
def train_classifier(theta, iteration, etha , k):
   for i in range(0, iteration):
    etha = etha / np.sqrt(iteration)
    theta = theta - etha * (1 / k) * grad(theta, x, y)
    return theta
def grad(theta, x, y):
    xTranse = x.transpose()
    cost = np.sum(logistic(x, theta) - y)
    gradiant = np.dot(cost, xTranse) 
    return gradiant

def logistic(x, theta):
    pri = np.dot(x, theta)
    hypo = 1 / (1 + np.exp(pri))
    return hypo


j = train_classifier(theta, iteration, etha , k)
print(j)


<ipython-input-3-f3d8c56159d6> in train_classifier(theta, iteration, etha, k)
     38     x1 = x[i:,]
     39     etha = etha / np.sqrt(iteration)
---> 40     theta = theta - etha * (1 / k) * grad(theta, x, y)
     41     return theta
     42 def grad(theta, x, y):

ValueError: operands could not be broadcast together with shapes (4,) (4,100) 

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

это код загрузки образцов и меток x, y

data = pd.read_csv('lab_iris_data.csv', header = None)
z = data.to_numpy()
x = z[:,0:3].astype(float)
labels = z[:,-1]
y = np.array([i == 'Iris-setosa' for i in labels])
i0 = np.where( y == True)[0]
i1 = np.where( y == False)[0]
y = y.astype(int)
x = np.c_[np.ones((x.shape[0])), x]
#plt.figure(figsize = (10,7))
#plt.grid()
#plt.xlabel('feature 1')
#plt.ylabel('feature 2')
#plt.scatter( x[i0,1], x[i0,2], x[i0,3])
#plt.scatter( x[i1,1], x[i1,2], x[i1,3])  
0 голосов
/ 16 апреля 2020

Это кажется немного странным. У вас есть 100 образцов с 4 различными функциями? Но только 4 этикетки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...