In [1]:
import numpy as np

In [2]:
def learningCurve(X_treino, y_treino, X_valida, y_valida, Lambda):
    '''
    Função que retorna um vetor de erros para o conjunto de treinamento e conjunto de validação cruzada.
        Conjunto de treinamento: X_treino, y_treino
        Conjunto de validação: X_valida, y_valida
        Lambda = 0
    '''
    
    theta0 = np.array([[15],[15]])
    m = y_treino.size
    Erro_treino = np.zeros((m, 1))
    Erro_valida = np.zeros((m, 1))
    
    for i in np.arange(m):
        TR = trainLinearReg(theta0, X_treino[:i+1], y_treino[:i+1], Lambda)
        Erro_treino[i] = linearRegCostFunction(TR.x, X_treino[:i+1], y_treino[:i+1], Lambda)
        Erro_valida[i] = linearRegCostFunction(TR.x, X_valida, y_valida, Lambda)
    
    return(Erro_treino, Erro_valida)