Как я могу использовать scipy optimize для оптимизации моей функции затрат Logistic Regression? - PullRequest
0 голосов
/ 31 декабря 2018

scipy.optimize.fmin_tnc не работает.это дает ошибку о несоответствии размеров.

Я оптимизирую функцию стоимости логистической регрессии.Я также рассчитал градиент.Я векторизовал мою реализацию.Может кто-нибудь любезно помочь.

import numpy as np    
import pandas as pd    
import matplotlib.pyplot as plt    
import scipy.optimize as opt    

data = pd.read_csv('ex2data1.txt',header = None)    
X = data.iloc[:,:-1]    
y = data.iloc[:,2]    
data.head()    

mask = (y==1)    
adm = plt.scatter(X[mask][0].values,X[mask][1].values)    
not_adm = plt.scatter(X[~mask][0].values,X[~mask][1].values)    
plt.xlabel('exam 1 score')    
plt.ylabel('exam 2 score')    
plt.legend((adm,not_adm),('admitted','not admitted'))    
plt.show()    

m,n = X.shape    
theta = np.zeros((n+1,1))    
X = np.hstack((np.ones((m,1)),X))    
y = y[y,np.newaxis]    
#only data reading and preparation so far.    

def sigmoid(z):    
    return 1/(1+np.exp(-z))    

def computeCost(X,y,theta):    
    h = sigmoid(np.dot(X,theta))    
    J = (-1/m)*(np.dot(y.T,np.log(h))+np.dot((1-y).T,np.log(1-h)))    
    return J

def gradient(X,y,theta):    
    h = sigmoid(np.dot(X,theta))    
    beta = h-y    
    return np.dot(X.T,beta)*(1/m)    

temp = opt.fmin_tnc(func = computeCost,x0 = theta.flatten(),fprime =gradient, args = (X, y.flatten()))       

Это дает ошибку несоответствия размеров.Я проверил функции computeCost и градиента, они работают правильно.Х 100х3, у 100х1, тета 3х1.https://i.stack.imgur.com/0hlKA.jpg это ссылка на изображение ошибки

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