Skip to content

Instantly share code, notes, and snippets.

View pvalienteverde's full-sized avatar

Pedro Valiente Verde pvalienteverde

View GitHub Profile
@pvalienteverde
pvalienteverde / AddressSanitizerExampleUseAfterScope.cpp
Last active June 8, 2017 06:39
Se ve que el compilador reutiliza la misma memoria, por eso lo importante del address con stack-use-after-scope.
/*
* AddressSanitizerExampleUseAfterScope.cpp
*
* Created on: Jun 7, 2017
* Author: pedro
*/
#include <iostream>
#include <cmath>
#include <vector>
#include <chrono>
//============================================================================
// Name : AddressSanitizer.cpp
// Author : Pedro Valiente Verde
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <chrono>
@pvalienteverde
pvalienteverde / ProblemaDiamante.cpp
Last active June 4, 2017 10:37
Caso tipico del problema del diamante
class IInstrumento{
public:
virtual void Tocar()=0;
virtual ~IInstrumento()=default;
};
class IPercusion:virtual public IInstrumento{
public:
//Metodos propios de los instrumentos de Percusion
};
@pvalienteverde
pvalienteverde / ClaseBaseVirtual.cpp
Last active June 4, 2017 10:41
Este es un ejemplo del abuso de heredar la clase base como virtual ya sea por inercia o por descuido. El proposito de "virtualizar" la clase base es asegurarnos que solamente instanciamos una clase (asi por ejemplo evitamos el problema del diamante), para ello el compilador tiene unos mecanismos determinados como instaciar las clases bases virtu…
#include <iostream>
#include <memory>
class IBase{
public:
virtual int GetX() const=0;
virtual int GetY() const=0;
virtual ~IBase()=default;
};
@pvalienteverde
pvalienteverde / WrapperVector.h
Created December 4, 2016 10:59
Ejemplo de como añadir iteradores personalizados a una clase. Es este ejemplo nuestra clase es hija de std::vector, aunque no es lo mas adecuado realizarlo por herencia para nuestro proposito es suficiente. Creamos un par de iteradores partiendo de los iteradores de std::vector con el predicado propuesto
template<typename T>
class WrapperVector: public std::vector<T> {
public:
typedef std::vector<T> Vector;
typedef std::function<bool(T)> Filtro;
typedef boost::filter_iterator<Filtro, typename Vector::iterator> IteradorFiltro;
WrapperVector(const Vector &valores, Filtro filtro) :
Vector(valores), filtro(filtro) {
}
@pvalienteverde
pvalienteverde / InterfazPublicaDomicilio.h
Last active December 4, 2016 10:39
Mostramos la interfaz publica de la clase Domicilio para los ejemplos sobre iteradores personalizados o de filtros por medio de boost::filter_iterator o boost::adaptors::filtered en http://wp.me/p7ezBh-4r . Para ver la interfaz completa: https://goo.gl/C58QEG
class Domicilio {
public:
Domicilio(int codigo_postal, int huespedes, std::string informacion = "");
~Domicilio() = default;
/**
* Getters y setters de atributos
*/
int CodigoPostal() const;
int Huespedes() const;
void Informacion(const std::string &informacion);
@pvalienteverde
pvalienteverde / ContentBased.py
Last active July 28, 2016 18:12
Sistema de recomendacion basado en el contenido (Content-Based). Es un modelo para la recomendacion o busqueda de articulos basados en la información que proporcionan. Es un ejemplo de http://www.p.valienteverde.com/sistemas-de-recomendacion-basados-en-el-contenido-content-based
class ContentBased(object):
"""
Modelo de recomendación de articulos basados en tags.
El modelo vectoriza cada articulo para poder calcular la similitud.
"""
def __init__(self, stop_words=None, token_pattern=None, metric='cosine', n_neighbors=5):
if stop_words is None:
stop_words = stopwords.words("english")
if token_pattern is None:
@pvalienteverde
pvalienteverde / CrossValidatorWithCostumizedValidator.pl
Last active April 9, 2018 03:05
When a userID is predicted when it is not already trained (all userID data is used on validation group and none of them to train), prediction is nan, so RegressionEvaluator returns Nan. To solve this we must change RegressionEvaluator by MiValidacion in CrossValidator
from pyspark.sql import SQLContext
from pyspark import SparkConf, SparkContext
from pyspark.ml.recommendation import ALS
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.ml.evaluation import RegressionEvaluator
from math import sqrt
from operator import add
conf = (SparkConf()
def wrapper_logistic_regression_with_L2(l2_penalty,
feature_matrix=feature_matrix_train,
sentiment=sentiment_train,
initial_coefficients=np.zeros(194),
step_size=5e-6, max_iter=501):
coef=logistic_regression_with_L2(feature_matrix, sentiment, initial_coefficients, step_size, l2_penalty, max_iter)
return (l2_penalty,coef)
from multiprocessing import Pool
@pvalienteverde
pvalienteverde / GD_momentum.py
Last active March 5, 2016 10:12
Gradient Descent With Momentum, TensorFLow
def minimizar(optimizador, funcion_coste, acumulador, learning_rate_iniciaL_tf, rate_momemtum_tf):
grads_and_vars = optimizador.compute_gradients(funcion_coste)
gradientes,variables = [],[]
for grad, var in grads_and_vars:
variables.append(var)
if grad is None:
gradientes.append(grad)
continue
# accumulador = accumulador * momentum + gradiente