Skip to content

Instantly share code, notes, and snippets.

View ramonrosa's full-sized avatar

Ramon Rosa ramonrosa

View GitHub Profile
@ramonrosa
ramonrosa / decorator_with_kwargs.py
Last active March 9, 2024 10:18
Decorator factory for decorator with optional kwargs
from functools import partial, wraps
from inspect import signature
from typing import Callable
def decorator_with_kwargs(decorator: Callable) -> Callable:
"""Decorator factory to give decorated decorators the skill to receive
optional keyword arguments.
If a decorator "some_decorator" is decorated with this function:
y_pred = X.dot(theta_gd)
_, ax = plt.subplots(figsize=(8,8))
ax.scatter(y, y_pred, marker='o', alpha=0.5)
ax.set_xlabel('y', fontsize=16)
ax.set_ylabel('y predito', fontsize=16)
ax.tick_params(axis='both',labelsize=14)
ax.grid()
def descida_de_gradiente(num_iteracoes, learning_rate, X, y):
theta = np.random.uniform(size=(X.shape[1],))
J_list = []
for _ in range(num_iteracoes):
J, gradiente = funcao_custo(theta, X, y)
J_list.append(J)
theta = theta - learning_rate*gradiente
_, ax = plt.subplots(figsize=(10,6))
def funcao_custo(theta, X, y):
m = len(y)
y_pred = X.dot(theta).flatten()
J = (1/m)*np.sum((y-y_pred)**2)
gradiente = -(2/m)*((X.T).dot(y - y_pred)).flatten()
return J, gradiente
import numpy as np
import matplotlib.pyplot as plt
def criar_dados_sinteticos():
m = 10000 # numero de exemplos
D = 5 # numero de dimensoes
sigma=0.05 # desvio padrao da distribuicao do ruido
theta_sintetico = [1.5, 2.2, 1.7, -3.0, 0.3] # lista dos parâmetros theta (inventados)