In [1]:
import numpy as np

In [2]:
def polyFeatures(X, p):
    '''
    Função que mapeie o conjunto de treinamento X de tamanho M x 1 em n-ésima potência.
    '''

    X_poly = X
    if p >= 2:
        for k in range(1,p):
            X_poly = np.column_stack((X_poly, np.power(X,k+1)))
            
    return X_poly

In [3]:
def normalizaFeatures(X):
    '''
    Função que calcula a normalizada para cada elemento, dado um vetor. 
    '''
    
    mu = np.mean(X, axis=0)
    X_norm = X - mu

    sigma = np.std(X_norm, axis=0)
    X_norm = X_norm/sigma

    return X_norm, mu, sigma