I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
Esta descomposición es fundamental cuando se trata de comprimir imágenes. La matriz aproximación K mostrada previamente es una compresión de la matriz original.

Ahora veremos la aplicación a pseudoinversa y sistemas de ecuaciones
Can you write Python code for it?

# A es una matriz cualquiera.
A = np.array([[1,2,4],[1,4,6],[2,1,6]])
Au, As, Avt = linalg.svd(A, full_matrices=True)
AS = np.diag(As)

Ainv = np.linalg.inv(A)
Au_inv = np.linalg.inv(Au)
As_inv = np.linalg.inv(AS)
Avt_inv = np.linalg.inv(Avt)
print(Au_inv,'\n', As_inv,'\n', Avt_inv)


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
Evidentemente b no esta en la imagen
La solución no trivial al sistema homogeneo es $ x \hspace{3mm} = \hspace{3mm} \left(\begin{array}{ccc}  a \ -a \end{array} \right)$ con $a \in \Bbb R$
Can you write Python code for it?


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
La imagen de A es el siguiente conjunto $  b \hspace{3mm} x \hspace{3mm} \left(\begin{array}{ccc}  1 \ 0 \end{array} \right)$ con $b \in \Bbb R$
Can you write Python code for it?


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
La matriz A es singular por definición no tiene inversa. Sin embargo, por
el método de la pseudo inversa podemos aproximarla solución aún cuando no esté en el espacio de la imagen de x o, equivalentemente, el espacio generado por $A$ el método que diseñamos, obtiene la pseudoinversa y aproxima una solución proyectando el vector $b$ sobre el espacio generado por la matriz A.

Si usaramos el tradicional de python o R, de obten la inversa, alzaría una excepción del tipo
Error, la matriz es singular.

Ahora $ A =  \left( \begin{array}{ccc}
 1 & 1 \
 0 & 1e-32 \end{array} \right)$
Can you write Python code for it?


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
Para Au y Avt, las transpestas son las inversas, en cuanto a S, por ser diagonal, los reciprocos de su diagonal, son la diagonal principal de la inversa de S, siempre y cuando distitnos de cero.
Can you write Python code for it?

AS = np.diag(np.array([1/x if x != 0 else 0 for x in As]))
AS

# Verificación
print(np.dot(Au, Au_inv))
print(np.dot(As, As_inv))
print(np.dot(Avt, Avt_inv))


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
Planteamiento del problema de minimización
Sea $ y $ sat_score y la queremos explicar mediante una relación lineal con $ x $ study_hours,
entonces queremos encontrar $ \alpha , \beta $ tal que para cada observación  aproximamos $ y_i$ con   $ \hat{y}_i = \alpha_i + \beta x_i $
La función de error que deseamos minimizar:  $ E  = \sum\limits_{i=1}^n (y_i - \hat{y}i )^2 = \sum\limits{i=1}^n (y_i - \alpha_i + \beta x_i )^2 $
Encontrar $ \alpha $ y $ \beta $ tal que minimizen E.
Las condiciones de primer orden implican obtener las derivadas parciales con el vector gradiente e igualarlas 0.
Vector Gradiente $$ \nabla F(\alpha,\beta) = (\frac{\partial E}{\partial \alpha},\frac{\partial E}{\partial \beta}) $$
Condiciones de Primer Orden
$$ \frac{\partial E}{\partial \alpha} = -2 * \sum\limits_{i=1}^n (y_i - \alpha_i + \beta x_i )  = 0 $$
$$ \frac{\partial E}{\partial \beta} =  -2 * \sum\limits_{i=1}^n (y_i - \alpha_i + \beta x_i )*x_i = 0 $$
La siguiente función recibe los parámetros alfa, beta y un numpy array de una dimensión con las horas de estudio y regresa un numpy array con predicciones de la forma $ y_i = \alpha + \beta x_i $
Can you write Python code for it?

def predict_score( alpha, beta, study_hours):

    predictions = np.array([alpha + beta * study_time for study_time in study_hours])

    return predictions


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
Programar una función que dada cualquier matriz devuelva la pseudainversa usando la descomposición SVD.
Can you write Python code for it?

def get_pseudoinverse(matrix):

    """
    Get pseudo inverse of a matrix
    """

    Au, As, Avt = linalg.svd(matrix, full_matrices=False)
    Au_inv = Au.transpose()
    As_inv = np.diag(np.array([1/x if x != 0 else 0 for x in As]))
    Avt_inv = Avt.transpose()

    pseudo_matrix = np.dot(Avt_inv,np.dot( As_inv, Au_inv))

    return pseudo_matrix

#Verificamos
A = np.array([[1,2,4],[1,4,6],[2,1,6]])
Ainv = get_pseudoinverse(A)
iden = np.dot(A,Ainv)
iden

def solve_system(coefficient_matrix, image_vector):

    pseudoinverse = get_pseudoinverse(coefficient_matrix)
    domain_vector = np.dot(pseudoinverse,image_vector)

    return domain_vector

### Prueba de calidad
B = np.array([[-10,9],[10,5]])
b = np.array([-9,-5])
print(B,'\n',b)
x = solve_system(B,b)
print(x)
np.dot(B,x)

###### Funciona!!!!!!!!


I am working on the file "Alumnos/FranciscoBahena/Tarea2_Técnica.ipynb".
The first task is:
Sea m la matrix en blanco y negro correspondiente a una imagen

Las filas de u son los eigenvectores asociados a $m$ $x$ $mT$
Las columnas de vt son los eigenvectores asociados a $mT$ $x$ $m$
$S$ es la matriz diagonal cuya diagonal contiene los valores singulares asociados a $m$

A continuación se grafica la comprobación
Can you write Python code for it?


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea1_JuanPabloDeBotton.ipynb".
The first task is:
Ejercicios
Can you write Python code for it?

class Array:
    "Una clase minima para algebra lineal"
    def __init__(self, list_of_rows):
        "Constructor y validador"
        # obtener dimensiones
        self.data = list_of_rows
        nrow = len(list_of_rows)
        #  ___caso vector: redimensionar correctamente
        if not isinstance(list_of_rows[0], list):
            nrow = 1
            self.data = [[x] for x in list_of_rows]
        # ahora las columnas deben estar bien aunque sea un vector
        ncol = len(self.data[0])
        self.shape = (nrow, ncol)
        # validar tamano correcto de filas
        if any([len(r) != ncol for r in self.data]):
            raise Exception("Las filas deben ser del mismo tamano")

    # Ejercicio 1
    def __repr__(self):
        str2print = "Array"
        for i in range(len(self.data)):
            if(i==0):
                str2print += str(self.data[i]) + "\n"
            if(i>0):
                str2print += "     " + str(self.data[i]) + "\n"
        return str2print

    def __str__(self):
        str2print = ""
        for i in range(len(self.data)):
            str2print += str(self.data[i]) + "\n"
        return str2print

    #Ejercicio2
    def __getitem__(self, idx):
        return self.data[idx[0]][idx[1]]

    def __setitem__(self, idx, valor):
        self.data[idx[0]][idx[1]] = valor

    # Ejercicio 3
    def zeros(x, y):
        array_de_ceros = Array([[0 for col in range(y)] for row in range(x)])
        return array_de_ceros

    def eye(x):
        array_eye = Array([[0 for col in range(x)] for row in range(x)])
        for i in range(x):
            for j in range(x):
                if i == j:
                    array_eye[i,j] = 1
        return array_eye

    # Ejercicio 4
    def transpose(self):
        #Obtener dimensiones
        num_row = len(self.data)
        num_col = len(self.data[0])
        #Crear matriz receptora
        mat_transpuesta = Array([[0 for col in range(num_row)] for row in...


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea1_JuanPabloDeBotton.ipynb".
The first task is:
El campo data de un Array almacena la lista de listas del array. Necesitamos implementar algunos metodos para que sea funcional como una clase de algebra lineal.

Un metodo para imprimir una matriz de forma mas agradable
Validador. Un metodo para validar que la lista de listas sea valida (columnas del mismo tamano y que las listas interiores sean numericas
Indexing Hacer sentido a expresiones A[i,j]
Iniciar matriz vacia de ceros Este metodos es muy util para preacolar espacio para guardar nuevas matrices
Transposicion B.transpose()
Suma A + B
Multiplicacion escalar y matricial 2 * A y A*B
Vectores (Opcional)

Con esto seria posible hacer algebra lineal
Metodos especiales de clase...
Para hacer esto es posible usar metodos especiales de clase __getitem, __setitem__, __add__, __mul__, __str__. Teoricamente es posible hacer todo sin estos metodos especiales, pero, por ejemplo, es mucho mas agradable escribir A[i,j] que A.get(i,j) o A.setitem(i,j,newval) que A[i,j] = newval.
1. Un metodo para imprimir mejor...
Necesitamos agregar un metodo de impresion. Noten que un array de numpy se imprime bonito comparado con el nuestro
Can you write Python code for it?


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea1_JuanPabloDeBotton.ipynb".
The first task is:
Las matrices de numpy se pueden multiplicar con la funcion matmul dentro de numpy
Can you write Python code for it?


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea1_JuanPabloDeBotton.ipynb".
The first task is:
Un subbloque (notar que un slice n:m es n,n+1,...,m-1
Can you write Python code for it?


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea1_JuanPabloDeBotton.ipynb".
The first task is:
Una fila entera:
Can you write Python code for it?


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
(b) Contestar, ¿la solución resultante es única? Si hay más de una solución, investigar que carateriza a la solución devuelta.
Can you write Python code for it?

print("Vector b no en imagen de A")
b = np.array([[12,8]])
solve = lin_solve_pseudo(A, np.transpose(b))
print(solve)
print("Cuando b no esta en la imagen, devuelve la solucion mas aproximada a su sistema")


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
(c) Repetir cambiando A=[[1,1],[0,1e-32]], ¿En este caso la solucíon es única? ¿Cambia el valor devuelto de x en cada posible valor de b del punto anterior?
Can you write Python code for it?

A = np.array([[1,1],[0,1e-32]])
b = np.array([[12,9]])
solve = lin_solve_pseudo(A, np.transpose(b))
print(solve)
cadena = """En este caso, la solucion devuelta siempre es el valor de la segunda coordenada del vector b por e+32\
             y es el valor de ambas incognitas, solo que con signos contrarios ej(x1=-9.0e+32, x2=9.0e+32) \
             esto debido a que cualquier numero entre un numero muy pequenio tiende a infinito, de manera que la \
             coordenada dos del vector tiene mucho peso con referencia a la coordenada uno del vector
         """
print(cadena)


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
2. Jugar con el sistema Ax=b donde A=[[1,1],[0,0]] y b puede tomar distintos valores.
(a) Observar que pasa si b esta en la imagen de A (contestar cuál es la imagen) y si no está (ej. b = [1,1]).
Can you write Python code for it?

print("La imagen de A es cualquier vector de dos coordenadas en donde la segunda componente siempre sea cero")
print("Vector b en imagen de A")
A = np.array([[1,1],[0,0]])
b = np.array([[12,0]])
solve = lin_solve_pseudo(A, np.transpose(b))
print(solve)
print("Cuando b esta en la imagen, la funcion lin_solve_pseudo devuelve la solucion unica a su sistema")
print("Vector b no en imagen de A")
b = np.array([[12,8]])
solve = lin_solve_pseudo(A, np.transpose(b))
print(solve)
print("Cuando b no esta en la imagen, devuelve la solucion mas aproximada a su sistema")


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Definan un numpy array X de dos columnas, la primera con unos en todas sus entradas y la segunda con la variable study_hours. Observen que X[alpha,beta] nos devuelve alpha + beta study_hours_i en cada entrada y que entonces el problema se vuelve sat_score ~ X*[alpha,beta]
Can you write Python code for it?

unos = np.ones((len(hrs_studio),1))
hrs_studio = [hrs_studio]
hrs_studio = np.transpose(hrs_studio)
x = np.hstack((unos, hrs_studio))
print("La prediccion es: ")
print(np.matmul(x,np.array([[353.165],[25.326]])))


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Ejercicio3
Leer el archivo study_vs_sat.csv y almacenearlo como un data frame de pandas.
Can you write Python code for it?

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("./study_vs_sat.csv", sep=',')
print(data)


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Para alguna imagen de su elección, elegir distintos valores de aproximación a la imagen original
Can you write Python code for it?

for i in range(1,60,15):
    reconstimg = np.matrix(u[:, :i]) * np.diag(s[:i]) * np.matrix(v[:i,:])
    plt.imshow(reconstimg, cmap='gray')
    plt.show()


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Plantear como un problema de optimización que intente hacer una aproximación de la forma sat_score ~ alpha + beta*study_hours minimizando la suma de los errores de predicción al cuadrado, ¿Cuál es el gradiente de la función que se quiere optimizar (hint: las variables que queremos optimizar son alpha y beta)?
Can you write Python code for it?

hrs_studio = np.array(data["study_hours"])
sat_score = np.array(data["sat_score"])

A = np.vstack([hrs_studio, np.ones(len(hrs_studio))]).T

m,c = np.linalg.lstsq(A,sat_score)[0]

print("Beta y alfa: ")
print(m,c)


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Programar una función que dada cualquier matriz devuelva la pseudoinversa usando la descomposición SVD. Hacer otra función que resuelva cualquier sistema de ecuaciones de la forma Ax=b usando esta pseudoinversa.
Can you write Python code for it?

A = np.array([[1,1,1],[1,1,3],[2,4,4]])
b = np.array([[18,30,68]])

solve = lin_solve_pseudo(A,np.transpose(b))
print(solve)


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Programar una función que reciba valores de alpha, beta y el vector study_hours y devuelva un vector array de numpy de predicciones alpha + beta*study_hours_i, con un valor por cada individuo
Can you write Python code for it?

def predict(alfa, beta, study_hours):
    study_hours_i=[]
    for a in range(len(study_hours)):
        study_hours_i.append(alfa + beta*np.array(study_hours[a]))
    return study_hours_i

print("prediccion")
print(predict(353.165, 25.326, hrs_studio))


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Realizar y verificar la descomposición SVD
Can you write Python code for it?

imggrayArray = np.array(list(imggray.getdata(band=0)), float)
imggrayArray.shape = (imggray.size[1], imggray.size[0])
imggrayArray = np.matrix(imggrayArray)

plt.imshow(imggray)

plt.show()

u, s, v = np.linalg.svd(imggrayArray)

print("U: ")
print(u)
print("S: ")
print(s)
print("V: ")
print(v)


I am working on the file "Alumnos/JuanPabloDeBotton/Tarea2_JuanPabloDeBotton.ipynb".
The first task is:
Usen la libreria matplotlib para visualizar las predicciones con alpha y beta solución contra los valores reales de sat_score.
Can you write Python code for it?

plt.plot(hrs_studio, sat_score, 'x', label='Datos', markersize=20)
plt.plot(hrs_studio, m*hrs_studio + c, 'r', label='Línea de regresión')
plt.legend()
plt.show()


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Al cambiar la entrada [2,2] y correr para diferentes valores de b, observamos que el resultado esta determinado por la elección de b[2,1]. En este caso las soluciones parecen ser de la forma [-x,x] donde x=b[2,1].
Toma un valor muy grande. El pequeño cambio en la Matriz A hace que las soluciones sean muy diferenetes.
Ejercicio 3
Utilizar la paquetería pandas para trabajar el ajuste por mínimos cuadrados a un conjunto de datos.
Can you write Python code for it?

import numpy as np
from pandas import DataFrame
import pandas as pd
import os


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Dado el sistema Ax=b donde A = [[1,1],[0,0]] y b puede tomar distintos valores.
a) Observar que pasa si b está en la imagen de A (contestar cuál es la imagen) y si no está (ej. b = [1, 1]).
b) Contestar, ¿la solución resultante es única? Si hay más de una solución, investigar que caracteriza a la solución directa.
c) Repetir cambiando A = [[1,1],[0, 1e-32]], ¿en este caso, la solución es única? ¿Cambia el valor devuelto de x en cada posible valor de b en el punto anterior?
Can you write Python code for it?

import numpy as np
A1 =np.array([[1,1],[0,0]])
A1

b1=np.array([[1],[1]])
b1

x1 = Solucion(A1,b1)
x1

d=np.linalg.det(A1)
d

def Solucion(A,b):
    import numpy as np
    import warnings
    if isinstance(A, np.ndarray):
        if isinstance(b, np.ndarray):
            if((A.shape[1] == b.shape[0])):#la matriz y el vector son compatibles
                if((A.shape[0] == A.shape[1]) and np.linalg.det(A) != 0):
                    A_inv=Inversa(A)
                    x_sol = np.dot(A_inv,b)
                    return(x_sol)
                elif (np.linalg.det(A)==0):
                    A_inv=P_Inversa(A)
                    x_sol = np.dot(A_inv.T,b)
                    print(x_sol)
                    print("La Matriz A es singular")
                else:
                    A_inv=P_Inversa(A)
                    x_sol = np.dot(A_inv.T,b)
                    return(x_sol)
            else:
                return "A y b son incompatibles"
        else:
            return "Problemas con b"
    else:
        return "Problemas con A"

x1 = Solucion(A1,b1)
x1


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Hacer la aproximación de orden k
Can you write Python code for it?

from scipy import *
from pylab import *
im = imread("/Users/Karen/image.jpg")[:,:,0]
gray()
figure(1)
imshow(image)

m,n = img.shape
m,n

U,s,Vt = svd(img)

Vt.shape

s.shape

S = resize(s,[m,1])*eye(m,n)
S

S.shape

m,n = img.shape
U,s,Vt = svd(img)
S = resize(s,[m,1])*eye(m,n)
k = 3
imshow(dot(U[:,1:k],dot(S[1:k,1:k],Vt[1:k,:])))
show()

k = 6
imshow(dot(U[:,1:k],dot(S[1:k,1:k],Vt[1:k,:])))
show()

k = 10
imshow(dot(U[:,1:k],dot(S[1:k,1:k],Vt[1:k,:])))
show()

k = 20
imshow(dot(U[:,1:k],dot(S[1:k,1:k],Vt[1:k,:])))
show()

k = 25
imshow(dot(U[:,1:k],dot(S[1:k,1:k],Vt[1:k,:])))
show()


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
La Imagen de A, son todas las posibles combinaciones lineales de las columnas de A.
Cambiando el valor de la posición [2,2] de la Matriz A1 por el valor 1e-32.
Can you write Python code for it?


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Plantear como un problema de optimización que intente hacer una aproximación de la forma sat_score ~ alpha + beta*study_hours minimizando la suma de los errores de predicción al cuadrado. Pueden consultar este link https://en.wikipedia.org/wiki/Simple_linear_regression ¿Cuál es el gradiente de la función que se quiere optimizar (hint: las variables que queremos optimizar son alpha y beta)?
Can you write Python code for it?

import statsmodels.formula.api as sm

result = sm.ols(formula="sat_score ~ study_hours", data=df).fit()
print (result.params)

study_hours=tabla["study_hours"]
sat_score=tabla["sat_score"]

Suma_study_hours = sum(study_hours)
Suma_sat_score = sum(sat_score)
Suma_hours_score = sum(study_hours*sat_score)
Suma_hours_2 = sum(study_hours**2)
Suma_score_2 = sum(sat_score**2)
obs = len(study_hours)

Beta = (obs*Suma_hours_score - Suma_study_hours*Suma_sat_score)/(obs*Suma_hours_2 - Suma_study_hours**2)
Beta

Alpha = Suma_sat_score/obs - (Beta*Suma_study_hours)/obs
Alpha

def mco(b0, b1, X):
    rows = len(X)
    sat_score_e1 = np.array([b0 + b1*X[i] for i in range(rows)])
    return(sat_score_e1)

sat_score_e1=mco(Alpha, Beta, study_hours)
sat_score_e1


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Programar un script que lea el archivo study_vs_sat.csv y lo almacene como un dataframe en pandas.
Can you write Python code for it?

tabla = pd.read_csv("/Users/karen/study_vs_sat.csv")
tabla


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Prueba con valores distintos
Can you write Python code for it?


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
Verificar la descomposición SVD
Can you write Python code for it?


I am working on the file "Alumnos/Karen_Esther/Tarea_2/Tarea_2 _Karen_v2.ipynb".
The first task is:
¿Que tiene que ver este proyecto con la compresión de imágenes?
La descomposición en valores singulares aplicado en el tratamiento de imágenes tiene como objetivo, comprimir la información implícita de una matriz; para ello, prevalecen los valores singulares que son determinantes en la formación de la matriz y, en ocasiones, permite eliminar el ruido de la imagen.
Ahora veremos la aplicación a pseudoinversa y sistemas de ecuaciones
Programar una función que dada cualquier matriz devuelva la pseudainversa usando la descomposición SVD. Hacer otra función que resuelva cualquier sistema de ecuaciones de la forma Ax=b usando esta pseudoinversa.
Can you write Python code for it?

from numpy import *
import numpy as np

def gen_mat(i,j):
    A = floor(random.rand(i,j)*20-0) # se está haciendo una matriz aleatoria de 5x5
    b = floor(random.rand(j,1)*20-0) # este es el vector de resultados b
    return A,b

A,b= gen_mat(5,5)

A

b

#Esto sólo sirve para matrices cuadradas.
def Inversa(A):
    if((A.shape[0] == A.shape[1])):
        U,s,V=np.linalg.svd(A)
        Inversa = np.dot(np.dot(V.T,linalg.inv(diag(s))),U.T)
        return Inversa
    else:
        return "La Matriz no es cuadrada, calcula la pseudoinversa"

w=Inversa(A)
w

m,n=A.shape
m,n

U, s, V = np.linalg.svd(A)

s

U.shape

V.shape

S=eye(m,n)
S

S = resize(s,[m,1])*eye(m,n)
S

Sigma = np.zeros([U.shape[1],V.shape[0]])
Sigma

def P_Inversa(A):
    import numpy as np
    if isinstance(A, np.ndarray):
        U, s, V = np.linalg.svd(A)
        m,n=A.shape
        S = resize(s,[m,1])*eye(m,n)
        for i in range(S.shape[0]):
            for j in range(S.shape[1]):
                if (i == j):
                    if (s[i] == 0):
                        S[i,j] == 0
                    else:
                        S[i,j] = 1/s[i]

        P_Inversa = np.dot(np.dot(V.T,S.T),U.T)
        return(P_Inversa)
    else:
        return "Errores en la especificación"

A_I=P_Inversa(A)
A_I

def Solucion(A,b):
    import numpy as np
    if isinstance(A, np.ndarray):
        if isinstance(b, np.ndarray):
            if((A.shape[1] == b.shape[0])):#la matriz y el vector son compatibles
                if((A.shape[0] == A.shape[1])):
                    A_inv=Inversa(A)
                    x_sol = np.dot(A_inv,b)
                else:
                    A_inv=P_Inversa(A)
                    x_sol = np.dot(A_inv.T,b)
                return(x_sol)
            else:
                return "A y b son incompatibles"
        else:
            return "Problemas con b"
    else:
        return "Problemas con A"

x = Solucion(A,b)
x


I am working on the file "Alumnos/Leonardo_Marin/Tarea2.ipynb".
The first task is:
Probar la visualización con los primeris n vectores
Can you write Python code for it?

# n= 1
j = 1
matriz_equivalente = np.matrix(U[:, :j]) * np.diag(sigma[:j]) * np.matrix(V[:j, :])
plt.imshow(matriz_equivalente, cmap='gray')

# n = 5
j = 5
matriz_equivalente = np.matrix(U[:, :j]) * np.diag(sigma[:j]) * np.matrix(V[:j, :])
plt.imshow(matriz_equivalente, cmap='gray')

# n = 25
j = 25
matriz_equivalente = np.matrix(U[:, :j]) * np.diag(sigma[:j]) * np.matrix(V[:j, :])
plt.imshow(matriz_equivalente, cmap='gray')

# n = 50
j = 50
matriz_equivalente = np.matrix(U[:, :j]) * np.diag(sigma[:j]) * np.matrix(V[:j, :])
plt.imshow(matriz_equivalente, cmap='gray')


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
11 Función lu_linsolve, utilizando el resultado de 10.
se resuelve primero  Ly = Pb
luego se resuelve
Ux = y
Can you write Python code for it?

print("Resolver sistema de ecuaciones ")
A = Array([[-2,-1,1],[-3,1,1],[2,1,3]])
b = Array([[1],[4],[-1]])
print("A:")
print(A)
print("b:")
print(b)
y = Array.lu_linsolve(A,b)
print("Resultado: ")
print(y)


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
2. Validador
Los valores deben ser numéricos, debe marcar error si se ingresa una letra
Can you write Python code for it?


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
3. Indexing and Item assignment
Can you write Python code for it?

print("Método para obtener y asignar un valor de la matriz")
A = Array([[-1,0,-5],[3,1,3],[1,1,1]])
print(A)
print("\n se cambia el valor (1,1) a -10 ")
A[1,1]=-10
print(A)
print("Valor A[1,1] = " + str(A[1,1]))


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
4. Iniciar una matriz en ceros y generar la matriz identidad
Can you write Python code for it?

print("Iniciar una matriz en ceros")
Z = Array.zeros((3,3))
print(Z)

print("Iniciar una matriz identidad")
Z = Array.eye(3)
print(Z)


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
5. Transpuesta
Can you write Python code for it?

A = Array([[-1,0,-5],[3,1,3],[1,1,1]])
print("A:")
print(A)
At = A.transpose()
print("A Transpuesta ")
print(At)


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
7. Multiplicación matricial
Can you write Python code for it?

A = Array([[-1,0,-5],[3,1,3],[1,1,1]])
B = Array([[1,2,6],[3,2,1],[-3,-2,1]])
valor = -3;

C = A * B
print("Multiplicacion A x B")
print(C)
print("Multiplicacion por escalar de la forma C = z x C")
C = 2 * A
print(C)

print("Multiplicacion por escalar de la forma C = C * z")
C = A * 2
print(C)


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
8. Forward substitution, la matriz debe ser de la forma triangular inferior L
Can you write Python code for it?

print("Forward substitution ")
A = Array([[-1,0,0],[-3,1,0],[1,-2,1]])
y = Array([[1],[-2],[-3]])
print("A:")
print(A)
print("y:")
print(y)
print("Resultado x:")
print(A.forward_subs(y))


I am working on the file "Alumnos/MiguelCastañeda/Tarea1_MiguelCastañeda.ipynb".
The first task is:
Comprobación haciendo PA = LU
Can you write Python code for it?

print("PA")
print(P*A)
print("LU")
print(L*U)


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
Calculen la pseudoinversa X^+ de X y computen (X^+)*sat_score para obtener alpha y beta soluciones.
Can you write Python code for it?

Xinv = np.linalg.pinv(X)

sc = np.array(df['sat_score'])

b = np.dot(Xinv,sc)

b


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
Comprobando
Can you write Python code for it?


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
Definan un numpy array X de dos columnas, la primera con unos en todas sus entradas y la segunda con la variable study_hours
Can you write Python code for it?

sh = np.array(df['study_hours'])
sh.shape
X = np.ones((sh.shape[0], 2))
X[:,1] = sh


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
Jugar con el sistema Ax=b donde A=[[1,1],[0,0]] y b puede tomar distintos valores
Can you write Python code for it?


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
La solución no es única y es del tipo $$x_1 = x_2$$
Repetir cambiando A=[[1,1],[0,1e-32]]
Can you write Python code for it?


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
Realizar y verificar la descomposición svd
Can you write Python code for it?

U, s, V = np.linalg.svd(imagen)

U

imagenSVD = np.dot(np.dot(U,np.diag(s)),V)


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
Usar la descomposición para dar una aproximación de grado k de la imagen
Para un grado 20, tenemos que
Can you write Python code for it?


I am working on the file "Alumnos/MiguelCastañeda/Tarea2_MiguelCastañeda.ipynb".
The first task is:
¿Qué tiene que ver este proyecto con compresión de imágenes?
Existe un valor de k para el cual la imagen se puede visualizar de manera similar al original considerando menos valores de la matriz que utiliza para su representación, esto puede ser utilizado en la compresión de imágenes.
Ejercicio 2
Programar una función que dada cualquier matriz devuelva la pseudainversa usando la descomposición SVD.
Can you write Python code for it?

def pInverse(A):
    U,d,V = np.linalg.svd(A)
    ddiag = np.diag(d)
    for i in range(0,max(ddiag.shape)):
        if ddiag[i,i]!=0:
            ddiag[i,i] = 1/ddiag[i,i]
    return np.dot(np.dot(np.transpose(V),ddiag),np.transpose(U))

def solve(A,b):
    return np.dot(pInverse(A),b)


I am working on the file "Alumnos/OliabHerrera/Tarea2.ipynb".
The first task is:
A es una matriz es que representa al sistema de ecuaciones $ X_{1}+X_{2}=b_{1}$ y $b_{2}=0$, su imagen es $b = \begin{bmatrix}b_{1}\0 \end{bmatrix}$. La solución no es única ya que hay una variable libre.
Dada la forma de la pseudoinversa de A $\begin{bmatrix}.5 & 0\.5 & 0 \end{bmatrix}$ la función siempre regresará una respuesta $\begin{bmatrix}x_{1}=b_{1}/2\x_{2}=b_{2}/2 \end{bmatrix}$ aunque $b_{2} != 0$
Can you write Python code for it?

import math
A=[[1,1],[0,1*math.exp(-32)]]

print(pseudo(A))

solve(A,b)


I am working on the file "Alumnos/OliabHerrera/Tarea2.ipynb".
The first task is:
Al hacer una aproximación de la forma $sat_score= \alpha + \betastudy_hours + \epsilon$ podemos plantear la minimización de errores al cuadrado de tal manera que $$min \epsilon^{2} = min_{\alpha,\hat{\beta}} satscore - \alpha-\hat{\beta}study hours$$
$$min_{\alpha,\hat{\beta}} y - X\hat{\beta}$$
En este caso $\alpha$ y $\beta$ resultantes de las condiciones de primer orden del problema de minimización son los gradientes que estamos buscando
Can you write Python code for it?

##Deefine una función que me de una predicción para cada valor de sat_score
##

def prediction (S,alpha,beta):

    prediction=np.zeros(len(data))

    for i in range(len(data)):
        score=S[i]
        prediction[i]=alpha+beta*score

    return prediction

##puedo usar datos que se me ocurran

alpha=-353.164879499
beta= 25.3264677779
S=data["study_hours"]

##Entonces usando esta información puedo hacer la predicción usando mi función

score_pred=prediction(S,alpha,beta)
print(score_pred)

##Definiendo el numpy array con 1 en el primer vector
##y sat_score en el segundo

Origen= data['Origen'] = np.ones(( len(data), ))
X=data[["Origen","study_hours"]]
print(X)

###Calculando X^+ * study_hours para obtener la alpha y beta
X_inv=pseudo(X)
alpha_aprox,beta_aprox=np.dot(X_inv,data["sat_score"])
print(alpha_aprox, beta_aprox)

##ahora, haciendo la formula de estimadores de OLS de veras para calcular alpha t beta
X_t=np.transpose(X)
Sxx=np.dot(X_t,X)
Sxy=np.dot(X_t,data["sat_score"])
Sxx_inv= pseudo(Sxx)

alpha,beta= np.dot(Sxx_inv,Sxy)

print(alpha,beta)

##visualizando los datos correctos vs las aproximaciones

alpha=353.164879499
beta= 25.3264677779
S=data["study_hours"]

prediccion=prediction(S, alpha,beta)

colors = ['red',  'blue']

pred=plt.plot(prediccion, 'bo', markersize=10)  # blue circle with size 10
val=plt.plot(data["sat_score"], 'ro', ms=10,)
plt.legend((pred, val),
           ('Valores de la predicción',"Valor Real"),
           scatterpoints=1,
           loc='lower left',
           ncol=3,
           fontsize=8)

plt.show()


I am working on the file "Alumnos/OliabHerrera/Tarea2.ipynb".
The first task is:
En este caso la matriz tiene una solución única ya que $b_{2}=exp-32$ y las x´s son diferentes a las del caso anterior.
OLS
Can you write Python code for it?

##Programando un script para descargar el archivo .csv de Github y convertirlo en un data frame

import numpy as np
import pandas as pd
import statsmodels.formula.api as sm
import matplotlib.pyplot as plt

#Script para descargar archivo y convertirlo en Data Frame con Pandas

#url="/Users/usuario/Documents/MaestriaCD/Propedeutico/PropedeuticoDataScience2017/study_vs_sat.csv"
url="https://raw.githubusercontent.com/mauriciogtec/PropedeuticoDataScience2017/master/Tarea/study_vs_sat.csv"
data = pd.read_csv(url)

data=pd.read_csv(url)
data= pd.DataFrame(data)


I am working on the file "Alumnos/OliabHerrera/Tarea2.ipynb".
The first task is:
Hacer una función que me resuelva un sistema de ecuaciones Ax=b
Can you write Python code for it?

def solve (A,y):
    A= np.array(A)
    Y=np.array(y)

    ##  reviso el tamaño
    rows, col =A.shape
    vec_rows, vec_col = Y.shape

    if rows != vec_rows:
        raise Exception ("El tamaño de la matriz y el vector no coinciden")
    else:
        inv=pseudo(A)
        solve= np.dot(inv, Y)

    return (solve)

A=[[1,1],[0,0]]
b=[[1],[1]]
solve(A,b)

pseudo(A)


I am working on the file "Alumnos/Pablo Soria/Tarea 2.ipynb".
The first task is:
3.- Que es la descomposición SVD ?
Intuitivamente la descomposición SVD, genera tres matrices, U,S,V dónde U y V son matrices ortogonales y S es una matriz diagonal con los valores singulares de A ordenados de menor a mayor. Esto quiere decir que cualquier matriz(particularmente si la pensamos como una transformación lineal) se puede ver como una rotación + un re-escalamiento + otra rotación.
Can you write Python code for it?

a=np.matrix([[0,0],[0,9],[3,0]])
print(a)
print("La matriz a se puede visualizar como")
(U,S,V)=np.linalg.svd(a)
print("Rotación")
print(U)
print("+ un Re-Escalamiento")
print(S)
print("+ Otra Rotación")
print(V)


I am working on the file "Alumnos/Pablo Soria/Tarea 2.ipynb".
The first task is:
7.- Que relación hay entre SVD y diagonalización ?
Para una matriz normal ( AtA=AAt ) podemos obtener la descomposición SVD de una diagonalización ortonormal de la misma, si la matriz no es normal esta relación no existe.
8.- Como se usa la SVD para dar una aproximación de menor rango de una matriz?
La SVD nos permite escribir cualquier matriz A de mxn como una suma finita de matrices de rango 1, etsa suma la podemos cortar cuando los valores singulares de la descomposición sean lo suficientemente pequeños. Aupongamos que contruimos:
A1 = s1R1
A2 = s1R1 + s2R2
.
.
.
Ar= s1R1 + ..... + sr*Rr
Entonce se puede demostrar que la matriz de rango 1 mas parecida a la original es precisamente la matriz A1 y logicamente A coincide con Ar.
9.- Describe el método de minimización por descenso gradiente
Se considera un punto inicial x=x0, se escoge una dirección de descenso dk = - grad(f(x^k), se realiza una busqueda lienal que seleccione sun paso ak tal que g(ak)=f(x^k + akdk) < f(x^k) = gk(0), hacemos x^(k+1)= x^k + akdk, se hace un test de covergencia, si converge se detiene el método si no se regresa al segundo paso hasta alcanzar la convergencia
10 - Menciona 4 problemas de optimización ( dos con restricciones y dos sin restricciones ) que te parezcan interesantes
Parte 2
Agoritmo de compresión
Can you write Python code for it?

import matplotlib.pyplot as plt
import numpy as np
import time
from PIL import Image

#Ponemos cualquier imagen ( si es a color la convierte a B&W)

img = Image.open('Ange.png')

#La convertimoa a b&W
imggray = img.convert('LA')
#Guardamos los datos en una matriz
imgmat = np.array(list(imggray.getdata(band=0)), float)
imgmat.shape = (imggray.size[1], imggray.size[0])
imgmat = np.matrix(imgmat)

#Hacemos la SVD
U, sigma, V = np.linalg.svd(imgmat)
#Hacemos un for para ver como se ve la imagen comprimida con los primeros n vectores de la SVD
for i in range(5, 51, 5):
    reconstimg = np.matrix(U[:, :i]) * np.diag(sigma[:i]) * np.matrix(V[:i, :])
    plt.imshow(reconstimg, cmap='gray')
    title = "n = %s" % i
    plt.title(title)
    plt.show()


I am working on the file "Alumnos/Pablo Soria/Tarea 2.ipynb".
The first task is:
Pandas
Can you write Python code for it?

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

#Sacamos los datos desde el archivo csv
data = pd.read_csv('Data.csv')
x_y = np.array(data)
x, y = x_y[:,0], x_y[:,1]
x, y = x.reshape(-1,1), y.reshape(-1, 1)
#llamamos el método de regresión lineal
lin_regression = LinearRegression()
lin_regression.fit(x,y)

#Sacamos los coeficientes
alpha = lin_regression.coef_
beta = lin_regression.intercept_

print("Alpha es:",alpha)
print("Beta es:",beta)
#para sacar las predicciones
predictions = lin_regression.predict(x)

#Sacamos al pseudoinversa:
newx = x_y[:,0]
newx2 = [value for value in newx]
newx3=np.ones(shape=(len(x),2))
#creamos el vector con 1s en la primer columna y el valor de horas en la segunda
for i in range(len(x)):
        newx3[i]=[1,newx2[i]]
#Sacamos la pseudoinversa
c=np.linalg.pinv(newx3)
#resolvemos el sistema
results=np.matmul(c,y)
#Lo imprimimos para ver que sea el mismo que el calculado por el algoritmo de regresión
print("El resultado es:", results)
#Lo mostramos en un plot (Avanzado) predicciones vs valores
plt.scatter(x, y,  color='grey')
plt.plot(x, predictions, color='red',linewidth=1)
plt.show()


I am working on the file "Alumnos/Pablo Soria/Tarea 2.ipynb".
The first task is:
Pseudoinversa
Can you write Python code for it?

def solver(a,b):
    import numpy as np
    c=np.linalg.pinv(a)
    d=c*b
    return d

a=np.matrix([[3,1],[2,3]])
b= np.matrix([[9],[13]])

f= solver(a,b)
print(f)


I am working on the file "Alumnos/Rodrigo_Cedeno/Tarea_2_Rodrigo_Cedeno.ipynb".
The first task is:
Calculen la pseudoinversa  X^+ de X y computen (X^+)*sat_score para obtener alpha y beta soluciones.

Can you write Python code for it?


I am working on the file "Alumnos/Rodrigo_Cedeno/Tarea_2_Rodrigo_Cedeno.ipynb".
The first task is:
El gradiente de la función es:
Can you write Python code for it?

grad_desc_x = -sum((2*(y-alpha-(beta*x))*x))
grad_desc_y = sum((2*(y-alpha-(beta*x))))
print ("El mínimo por descenso gradiente es ",grad_desc_y,", ",grad_desc_x)


I am working on the file "Alumnos/Rodrigo_Cedeno/Tarea_2_Rodrigo_Cedeno.ipynb".
The first task is:
Se puede observar que el resultado es el mismo utilizando la seudoinversa, que el obtenido realizando la operación: Y=(X^tX)^(-1)X^t*study_hours
(Avanzado) Usen la libreria matplotlib par visualizar las predicciones  con alpha y beta solución contra los valores reales de sat_score.
Can you write Python code for it?


I am working on the file "Alumnos/Rodrigo_Cedeno/Tarea_2_Rodrigo_Cedeno.ipynb".
The first task is:
a) ¿Cuál es la imágen de la matriz?
La imágen de esta matriz es:
\begin{equation}
{(x \ , \ 0): x \ \epsilon \ R }
\end{equation}
b) ¿La solución resultante es única? Si hay más de una solución, investigar que carateriza a la solución devuelta.
La solución resultante no es única; debido a que la matriz es singular (no es invertible y su determinante = 0). Se puede decir que hay una infinidad de resultados.
c) Cambiando  A=[[1,1],[0,1e-32]], ¿En este caso la solucíon es única? ¿Cambia el valor devuelto de x en cada posible valor de b del punto anterior?
Iterando con el código anterior se puede observar que hay una solución única a pesar de que el valor 1e-32 se aproxime a cero. Es muy importante en este caso considerar el valor exacto y no cero.
Parte 4: Ajuse de mínimos cuadrados
Can you write Python code for it?

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#Crear Data Frame con archivo CSV
df = pd.DataFrame(pd.read_csv("study_vs_sat.csv", parse_dates=True))

# Cambiar nombre a columnas
newcols = {
    'Unnamed: 0': 'study_hours',
    'Unnamed: 1': 'sat_score',}
df.rename(columns=newcols, inplace=True)

#Borrar columnas vacías
df.drop('Unnamed: 2', axis=1, inplace=True)
df.drop('Unnamed: 3', axis=1, inplace=True)
df.drop('Unnamed: 4', axis=1, inplace=True)
df.drop('Unnamed: 5', axis=1, inplace=True)
df.drop('Unnamed: 6', axis=1, inplace=True)

study_hours = df.study_hours
sat_score = df.sat_score

#Comenzar OLS
#Definir X
#Convertir DataFrame en Array
df_mat = np.array(df)

x = study_hours
y = sat_score

n = len(x)
xi_sum = np.sum(x)
yi_sum = np.sum(y)
xy = np.multiply(x,y)
xy_sum = np.sum(xy)
x_sq = x**2
x_sq_sum = np.sum(x_sq)
beta = ((n*(xy_sum))-(xi_sum*yi_sum))/((n*x_sq_sum)-(xi_sum**2))
alpha = (yi_sum-(beta*xi_sum))/n
y = alpha + beta*x

def matrix_solve(data):
    #Calcular Alpha y Beta
    df_mat_2 = np.insert(df_mat, 0, 1, axis=1)
    df_mat_X = df_mat_2[:, 0:2]
    df_mat_Xt = np.transpose(df_mat_X)
    XXt = np.matmul(df_mat_Xt, df_mat_X)
    XXt_inv = np.linalg.inv(XXt)
    XXt_inv_Xt = np.matmul(XXt_inv,df_mat_Xt)
    df_mat_Y = df_mat_2[:, 2:3]
    Alpha_Beta = np.matmul(XXt_inv_Xt,df_mat_Y)
    alpha = Alpha_Beta[0]
    beta = Alpha_Beta[1]
    #Calcular Y
    Y_hat = np.matmul(df_mat_X,Alpha_Beta)
    Beta_norm = np.linalg.norm(beta)
    return(Y_hat)

def predictions(df_mat_X,alpha,beta):
    predict = np.matmul(df_mat_X,Beta)
    return predict

def res_w_pseudoinverse():
    df_mat_2 = np.insert(df_mat, 0, 1, axis=1)
    df_mat_X = df_mat_2[:, 0:2]
    pseudo_X = np.linalg.pinv(df_mat_X)
    result = np.matmul(pseudo_X, sat_score)
    return result

def plot(df_mat):
    input = df_mat
    plt.figure(1)
    x_axis = np.linspace(0, len(input))
    y_axis = np.array(alpha +  beta * x_axis)
    plt.plot(x_axis, y_axis, color='b')
    plt.scatter(input[:, 0],...


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Al cambiar la entrada [2,2] de la matriz A original de 0 a 1-e32 y correr para diferentes valores de b, se observa que el resultado esta determinado por la elección de b[2,1] sin importar el valor de b[1,1]. En este caso las soluciones parecen ser de la forma [-x,x] donde x=b[2,1].
En comparación con la matriz original, el valor de b[2,1] ahora no es cero, sino que toma un valor muy grande. El pequeño cambio en la Matriz A hace que las soluciones sean muy diferenetes.
Ejercicio 3
Utilizar la paquetería pandas para trabajar el ajuste por mínimos cuadrados a un conjunto de datos.
Can you write Python code for it?

import numpy as np
from pandas import DataFrame
import pandas as pd
import os


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Al hacer el ejercicio con A1 = [[1,1],[0,0]] y b=([[1],[1]]), se obtiene un error de que el sistema no se puede resolver porque A es una matriz singular, las columnas de A son iguales por lo que su determinante es igual a 0. Para evitar este error y que se resuelva por la pseudoinversa, se mete la condición del determinante en la función.
Can you write Python code for it?

d=np.linalg.det(A1)
d

def Solucion(A,b):
    import numpy as np
    import warnings
    if isinstance(A, np.ndarray):
        if isinstance(b, np.ndarray):
            if((A.shape[1] == b.shape[0])):#la matriz y el vector son compatibles
                if((A.shape[0] == A.shape[1]) and np.linalg.det(A) != 0):
                    A_inv=Inversa(A)
                    x_sol = np.dot(A_inv,b)
                    return(x_sol)
                elif (np.linalg.det(A)==0):
                    A_inv=P_Inversa(A)
                    x_sol = np.dot(A_inv.T,b)
                    print(x_sol)
                    print("La Matriz A es singular")
                else:
                    A_inv=P_Inversa(A)
                    x_sol = np.dot(A_inv.T,b)
                    return(x_sol)
            else:
                return "A y b son incompatibles"
        else:
            return "Problemas con b"
    else:
        return "Problemas con A"


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Comparar la solución para obtener los parámetros anteriormente planteada y la que se obtienen al hacel la multiplicación de matrices directa.

La solución es la misma excepto por los decimales que se redondean en la de la pseudoinversa.

Avanzado: Usen la libreria matplotlib para visualizar las predicciones  con alpha y beta solución contra los valores reales de sat_score.
Can you write Python code for it?

import matplotlib.pyplot as plt

plt.subplot(223)
plt.scatter(study_hours, sat_score_e1, label="pronosticado")
plt.scatter(study_hours, sat_score, label="observado")
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.ylabel('sat score')
plt.xlabel('study hours')
plt.title('Ajuste Modelo')

print(plt.show())


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Definir un numpy array X de dos columnas, la primera con unos en todas sus entradas y la segunda con la variable study_hours. Observen que X[alpha,beta] devuelve alpha + betastudy_hours_i en cada entrada y que entonces el problema se vuelve sat_score ~ X*[alpha,beta].
Can you write Python code for it?

len(df["study_hours"])
col_b0 = [1 for i in range(len(x))]
X_m = np.array([col_b0,df["study_hours"]])
X_m

parametros = np.array([Alpha,Beta])
sat_score_e2=np.dot(X_m.T,parametros)
sat_score_e2


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Jugar con el sistema Ax=b donde A = [[1,1],[0,0]] y b puede tomar distintos valores.
a) Observar que pasa si b está en la imagen de A (contestar cuál es la imagen) y si no está (ej. b = [1, 1]).
b) Contestar, ¿la solución resultante es única? Si hay más de una solución, investigar que caracteriza a la solución directa.
c) Repetir cambiando A = [[1,1],[0, 1e-32]], ¿en este caso, la solución es única? ¿Cambia el valor devuelto de x en cada posible valor de b en el punto anterior?
Can you write Python code for it?

import numpy as np
A1 =np.array([[1,1],[0,0]])
A1

b1=np.array([[1],[1]])
b1

x1 = Solucion(A1,b1)
x1


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Las soluciones parecen ser de la forma [x,0]
La Imagen de A, son todas las posibles combinaciones lineales de las columnas de A.
Cambiar el valor de la posición [2,2] de la Matriz A1 por el valor 1e-32.
Can you write Python code for it?

A2 =np.array([[1,1],[0,1e-32]])
A2

x4 = Solucion(A2,b1)
x4

x5 = Solucion(A2,b2)
x5

x6 = Solucion(A2,b3)
x6

b4=np.array([[5],[7]])
x7 = Solucion(A1,b4)
x7

x8 = Solucion(A2,b4)
x8

b5=np.array([[5],[1e-13]])
x9 = Solucion(A1,b5)
x9

x10 = Solucion(A2,b5)
x10


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Para obtener la solución para cualquier matriz, hay que juntar las 2 funciones anteriores
Can you write Python code for it?

def Solucion(A,b):
    import numpy as np
    if isinstance(A, np.ndarray):
        if isinstance(b, np.ndarray):
            if((A.shape[1] == b.shape[0])):#la matriz y el vector son compatibles
                if((A.shape[0] == A.shape[1])):
                    A_inv=Inversa(A)
                    x_sol = np.dot(A_inv,b)
                else:
                    A_inv=P_Inversa(A)
                    x_sol = np.dot(A_inv.T,b)
                return(x_sol)
            else:
                return "A y b son incompatibles"
        else:
            return "Problemas con b"
    else:
        return "Problemas con A"

x = Solucion(A,b)
x


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Plantear como un problema de optimización que intente hacer una aproximación de la forma <code>sat_score ~ alpha + beta*study_hours minimizando la suma de los errores de predicción al cuadrado. Pueden consultar este link https://en.wikipedia.org/wiki/Simple_linear_regression ¿Cuál es el gradiente de la función que se quiere optimizar (hint: las variables que queremos optimizar son alpha y beta)?

Antes de hacer las funciones, se prueba con el resultado de las librerías de python.
Can you write Python code for it?

import statsmodels.formula.api as sm

result = sm.ols(formula="sat_score ~ study_hours", data=df).fit()
print (result.params)

study_hours=tabla["study_hours"]
sat_score=tabla["sat_score"]

Suma_study_hours = sum(study_hours)
Suma_sat_score = sum(sat_score)
Suma_hours_score = sum(study_hours*sat_score)
Suma_hours_2 = sum(study_hours**2)
Suma_score_2 = sum(sat_score**2)
obs = len(study_hours)

Alpha = Suma_sat_score/obs - (Beta*Suma_study_hours)/obs
Alpha

Beta = (obs*Suma_hours_score - Suma_study_hours*Suma_sat_score)/(obs*Suma_hours_2 - Suma_study_hours**2)
Beta


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Programar una función que reciba valores de alpha, beta y el vector sat_score y devuelva un vector array de numpy de predicciones alpha + beta*study_hours_i, con un valor por cada individuo
Can you write Python code for it?

def mco(b0, b1, X):
    rows = len(X)
    sat_score_e1 = np.array([b0 + b1*X[i] for i in range(rows)])
    return(sat_score_e1)

sat_score_e1=mco(Alpha, Beta, study_hours)
sat_score_e1


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Se prueba con vectores b diferentes:
Can you write Python code for it?


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
Se vuelve a correr el ejercicio con las modificaciones al código
Se vuelve a hacer la prueba con el vector b=[1,1]
Can you write Python code for it?


I am working on the file "Alumnos/ValeriaAlvarez/Tarea 2 - Valeria Alvarez Navarro.ipynb".
The first task is:
¿Qué tiene que ver este proyecto con compresión de imágenes?
La descomposición de valores singulares tiene una de sus mayores aplicaciones en la compresión de imágenes. Lo que entiendo es que esta aplicación es importante conocerla pues la SVD es el mecanismo para que estas imágenes puedan ser trasmitidas de manera eficiente a través de internet con la cantidad mínima de información necesaria para que la imagen no pierda sus elemetos escenciales y con utilizando menor capacidad de almacenamiento.
En la compresión de imágenes es probablemente, donde se puede ver con mayor claridad el potencial del SVD para el análisis de datos.
Ejercicio 2
Aplicación de pseudoinversa y sistema de ecuaciones

Programar una función que dada cualquier matriz devuelva la pseudainversa usando la descomposición SVD.
Hacer otra función que resuelva cualquier sistema de ecuaciones de la forma Ax=b usando esta pseudoinversa.
Can you write Python code for it?

from numpy import *
import numpy as np

def gen_mat(i,j):
    A = floor(random.rand(i,j)*20-0) # se está haciendo una matriz aleatoria de 4x4
    b = floor(random.rand(j,1)*20-0) # este es el vector de resultados b
    return A,b

A,b= gen_mat(4,4)

A

b

#Esto sólo sirve para matrices cuadradas.
def Inversa(A):
    if((A.shape[0] == A.shape[1])):
        U,s,V=np.linalg.svd(A)
        Inversa = np.dot(np.dot(V.T,linalg.inv(diag(s))),U.T)
        return Inversa
    else:
        return "La Matriz no es cuadrada, calcula la pseudoinversa"

w=Inversa(A)
w

m,n=A.shape
m,n

U, s, V = np.linalg.svd(A)

s

U.shape

V.shape

S=eye(m,n)
S

S = resize(s,[m,1])*eye(m,n)
S

Sigma = np.zeros([U.shape[1],V.shape[0]])
Sigma

def P_Inversa(A):
    import numpy as np
    if isinstance(A, np.ndarray):
        U, s, V = np.linalg.svd(A)
        m,n=A.shape
        S = resize(s,[m,1])*eye(m,n)
        for i in range(S.shape[0]):
            for j in range(S.shape[1]):
                if (i == j):
                    if (s[i] == 0):
                        S[i,j] == 0
                    else:
                        S[i,j] = 1/s[i]

        P_Inversa = np.dot(np.dot(V.T,S.T),U.T)
        return(P_Inversa)
    else:
        return "Errores en la especificación"

A_I=P_Inversa(A)
A_I


I am working on the file "Alumnos/Victor Quintero/Tarea 2.ipynb".
The first task is:

 Definan un numpy array X de dos columnas, la primera con unos en todas sus entradas y la segunda y la segunda con la variable Study_hours. Observen que X*[alpha,beta] nos devuelve alpha + beta*study_hours_i en cada entrada y que entonces el problema se vuelve sat_score ~ X*[alpha,beta]
Can you write Python code for it?


I am working on the file "Alumnos/Victor Quintero/Tarea 2.ipynb".
The first task is:

Calculen la pseudoinversa  X^+ de X y computen (X^+)*sat_score para obtener alpha y beta soluciones.

Can you write Python code for it?

Xpseudo= pseudoinversa(X)
Sscore= z.iloc[:,1]

ab=np.dot(Xpseudo,Sscore)
ab


I am working on the file "Alumnos/Victor Quintero/Tarea 2.ipynb".
The first task is:
Ejemplo para ver que la función resuelve de manera correcta el sistema de ecuaciones:
Can you write Python code for it?


I am working on the file "Alumnos/Victor Quintero/Tarea 2.ipynb".
The first task is:
Ejercicio 3: Ajuste de mínimos cuadrados
Can you write Python code for it?

import pandas as pd

z = pd.read_csv("https://raw.githubusercontent.com/mauriciogtec/PropedeuticoDataScience2017/master/Tarea/study_vs_sat.csv",index_col = False)

m, n = z.shape

SX= z.iloc[0][0]
SY = z.iloc[0][1]
SXX = z.iloc[0][0] **2
SYY = z.iloc[0][1] **2
SXY = z.iloc[0][0] * z.iloc[0][1]

for i in range (1,m):
    SX += z.iloc[i][0]
    SY += z.iloc[i][1]
    SXX += z.iloc[i][0] **2
    SYY += z.iloc[i][1] **2
    SXY += z.iloc[i][0] * z.iloc[i][1]

Beta = (m*SXY - SX*SY) / (m*SXX- SX**2)
Alpha = (1/m)*SY - Beta*(1/m)*SX

funcion= "Sat_score ~ " + str(Alpha) + " + " + str(Beta) + "Study_hours"
print(z,"\n ","\n ",funcion)


I am working on the file "Alumnos/Victor Quintero/Tarea 2.ipynb".
The first task is:
Jugar con la función donde b puede tomar distintos valores y A=[[1,1],[0,0]]:
Can you write Python code for it?


I am working on the file "Alumnos/Victor Quintero/Tarea 2.ipynb".
The first task is:
a) Si b esta en la imagen de A (La imagen es [x,0]) devuelve la solución al sistema de manera correcta. Si b no esta en la imagen (ej. b= [1,1]) devuelve la solución al sistema considerando la imagen, que es la solución más cercana, en el ejemplo b=[1,1] devuelve la solución al sistema considerando b=[1,0].
b) ¿La solución resultante es única? No, ya que para diferentes valore de b, existe el mismo valor de x. Esto sucede porque la matriz es singular.
c) Cambiar a: A=[[1,1],[0,1e-32]]. ¿La solución es única? Sí, para cada diferente valor de b1 y b2, devuelve un valor único de x1 y x2.  ¿Cambia el valor devuelto de x en cada posible valor de b del punto anterior? sí, debido a que esta matriz si es invertible con el metodo de la pseudoinversa, aunque prácticamente sea la misma matriz que en el punto anterior.
Can you write Python code for it?


I am working on the file "Alumnos/Zuraya Huizar/Tarea 2.ipynb".
The first task is:
La imagen original en blanco y negro

La aproximación de grado 10

La aproximación de grado 20

La aproximación de grado 30

La aproximación de grado 40

En este proyecto comprimimos una imagen dado que al descomponer la matriz asociada a dicha imagen y preservar los k valores singulares más grandes redujimos el tamaño de la imagen.
2. Sistemas de ecuaciones con pseudoinversa
Can you write Python code for it?

import numpy as np
def pseudoinv(A):
    U, s, V = np.linalg.svd(A)
    Ut = np.mat(U.T)
    ss=np.zeros([U.shape[0],V.shape[0]])
    for i in range(U.shape[0]):
        for j in range(V.shape[0]):
            if (i==j and s[i]!=0):
                ss[i,j]=1/s[i]
            else:
                pass
    sst=np.mat(ss.T)
    Vt =np.mat(V.T)
    pseudo=(Vt*sst)*Ut
    return pseudo
def solve_pseudo(A,b):
    return pseudoinv(A)*np.mat(b)

M=np.array([[1,1], [0,0]])
pseudoinv(M)

b0=np.array([[1],[0]])
solve_pseudo(M,b0)

b=np.array([[1],[1]])
solve_pseudo(M,b)


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
... implementando métodos que faciliten la utilización de dicha clase para nuestros fines de Álgegra Lineal
Métodos especiales de clase
1. Método de Pretty Print
He aquí el método para imprimir bonito, primero mostramos como se imprime por default sin existir el método
Can you write Python code for it?

Array([[1,2,3], [4,5,6]])

print(Array([[1,2,3], [4,5,6]]))

# Prueba de clase
class JorgeClass:
    def __init__(self):
        pass # para no hacer nada
    def say_hi(self):
        print("¡Método de impresión simple!")
    def __repr__(self):
        return "Representación sin imprimir nada"
    def __str__(self):
        return "Método explícito para *print* como objeto"

x = JorgeClass()
x.say_hi()

x

print(x)


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
 EJERCICIO 5: Vectores
Can you write Python code for it?

class Vector(transpose):
    "clase de Vectores Array"
    def __init__(self, list_of_numbers):
        self.vdata = list_of_numbers
        list_of_rows = [[x] for x in list_of_numbers]
        return transpose.__init__(self, list_of_rows)
    def __repr__(self):
        return "Vector(" + str(self.vdata) + ")"
    def __str__(self):
        return str(self.vdata)
    def __add__(self, other):
        if type(other) is Vector:
            new_arr = transpose.__add__(self, other)
        else:
            "Suma escalar"
            rows, cols = self.shape
            new_arr = transpose([0 for r in range(rows)])
            for r in range(rows):
                new_arr.data[r][0] = self.data[r][0] + 10
            print(new_arr.__dict__)
        return Vector([x[0] for x in new_arr.data])

Vector([1,2,3]).__dict__

Vector([1,2,3])

Vector([1,2,3]) + Vector([4,5,6])


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
<span style="color: red"> EJERCICIO 3 </span>
Función para crear arrays "vacíos" (en ceros)
Can you write Python code for it?

import re
import numpy as np

class zeros:
    "Clase para llenar una matriz en Ceros"
    data = list()
    shape = None
    def __init__(self, shape):
        "Constructor"
        self.data = list()
        print(shape)
        for i in range(0, shape[1]):
            self.data.append(list())
            for j in range(0, shape[0]):
                self.data[i].append(list())
                self.data[i][j] = 0.
                #self.data[i].append(list())
            #    self.data[i][j] = 0
        self.shape = shape
        #self.data = np.zeros(shape)
    def eye(self):
        if self.shape[0] != self.shape[1]:
            raise Exception("Ejercicio 3: las columnas y las filas deben ser de igual número n = m")
        for i in range(0,self.shape[1]):
            for j in range(0, self.shape[0]):
                if(i == j):
                    self.data[i][j] = 1.0
    def __repr__(self):
        retval = "[\n"
        for list in self.data:
            retval += "["
            for x in list:
                retval += str(x) + ", "
            retval += "], \n"
        retval = retval + "]"
        return retval.replace(", ]", "]")
    def __str__(self):
        return self.__repr__()
        #return "Ejercicio 1: print"
    def __getitem__(self, index):
        return(self.data[index[0]][index[1]])
    def __setitem__(self, index, newval):
        self.data[index[0]][index[1]] = newval
        return

X = zeros([3,4])
X

X.eye()
X

X = zeros((4, 4))
X.eye()
X


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
<span style="color: red"> EJERCICIO 4 </span>
Función para transponer arrays
Can you write Python code for it?

import re

class transpose:
    "Clase para llenar una matriz en Ceros"
    data = list()
    shape = None
    def __init__(self, list_of_rows):
        "Constructor"
        # obtener dimensiones
        self.data = list_of_rows
        nrow = len(list_of_rows)
        #  ___caso vector: redimensionar correctamente
        if not isinstance(list_of_rows[0], list):
            nrow = 1
            self.data = [[x] for x in list_of_rows]
        # ahora las columnas deben estar bien aunque sea un vector
        ncol = len(self.data[0])
        self.shape = (nrow, ncol)
        # validar tamano correcto de filas
        if any([len(r) != ncol for r in self.data]):
            raise Exception("Las filas deben ser del mismo tamano")
    def transpose(self):
        transposed = list()
        for i in range(0, len(self.data[1])):
            transposed.append(list())
            for j in range(0, len(self.data[0])):
                transposed[i].append(list())
                transposed[i][j] = self.data[j][i]
        print(transposed)
    def eye(self):
        if self.shape[0] != self.shape[1]:
            raise Exception("Ejercicio 3: las columnas y las filas deben ser de igual número n = m")
        for i in range(0,self.shape[1]):
            for j in range(0, self.shape[0]):
                if(i == j):
                    self.data[i][j] = 1.0
    def __repr__(self):
        retval = "[\n"
        for list in self.data:
            retval += "["
            for x in list:
                retval += str(x) + ", "
            retval += "], \n"
        retval = retval + "]"
        return retval.replace(", ]", "]")
    def __str__(self):
        return self.__repr__()
        #return "Ejercicio 1: print"
    def __getitem__(self, index):
        return(self.data[index[0]][index[1]])
    def __setitem__(self, index, newval):
        self.data[index[0]][index[1]] = newval
        return
    def __add__(self, other):
        "Hora de sumar"
        if isinstance(other, transpose):
            if...


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
Index & Item Assignment
Can you write Python code for it?


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
Inicialización de una matriz en ceros con numpy
Can you write Python code for it?


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
Prueba de validador
Can you write Python code for it?


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
Selección y multi selección de elementos...
$$
X = \begin{bmatrix} 1 & 2 & 3 \ 4 & 5 & 6  \end{bmatrix}
$$
Can you write Python code for it?

X[1, :] #1. Fila entera

X[:, 1] #2. Columna entera

X[0:2, 0:2] #3. Slice de n:m, n,n+1,...,m-1

X.shape #Dimensión de arrays


I am working on the file "Alumnos/jorge_altamirano/Tarea1.ipynb".
The first task is:
Suma
Can you write Python code for it?

np.array([[1,2,3],[4,5,6],[7,8,9]]) + np.array([[10,11,12],[13,14,15],[16,17,18]])

Y = transpose([[10,11,12],[13,14,15],[16,17,18]])
X + Y

Z = X + 10
Z

Z.data

transpose([[1,1],[1,1]]) + transpose([[2,2],[2,2]])

import re

class transpose:
    "Clase para llenar una matriz en Ceros"
    data = list()
    shape = None
    def __init__(self, list_of_rows):
        "Constructor"
        # obtener dimensiones
        self.data = list_of_rows
        nrow = len(list_of_rows)
        #  ___caso vector: redimensionar correctamente
        if not isinstance(list_of_rows[0], list):
            nrow = 1
            self.data = [[x] for x in list_of_rows]
        # ahora las columnas deben estar bien aunque sea un vector
        ncol = len(self.data[0])
        self.shape = (nrow, ncol)
        # validar tamano correcto de filas
        if any([len(r) != ncol for r in self.data]):
            raise Exception("Las filas deben ser del mismo tamano")
    def transpose(self):
        transposed = list()
        for i in range(0, len(self.data[1])):
            transposed.append(list())
            for j in range(0, len(self.data[0])):
                transposed[i].append(list())
                transposed[i][j] = self.data[j][i]
        print(transposed)
    def eye(self):
        if self.shape[0] != self.shape[1]:
            raise Exception("Ejercicio 3: las columnas y las filas deben ser de igual número n = m")
        for i in range(0,self.shape[1]):
            for j in range(0, self.shape[0]):
                if(i == j):
                    self.data[i][j] = 1.0
    def __repr__(self):
        retval = "[\n"
        for list in self.data:
            retval += "["
            for x in list:
                retval += str(x) + ", "
            retval += "], \n"
        retval = retval + "]"
        return retval.replace(", ]", "]")
    def __str__(self):
        return self.__repr__()
        #return "Ejercicio 1: print"
    def __getitem__(self, index):
        return(self.data[index[0]][index[1]])
...


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Bernoulli Naive Bayes
Can you write Python code for it?

from sklearn.naive_bayes import BernoulliNB
model = BernoulliNB().fit(X_train, Y_train)
prediction['Bernoulli'] = model.predict(X_test)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Cleaning text of stopwords
Can you write Python code for it?

from nltk.corpus import stopwords

tokenized_reviews_no_stopwords = []
for doc in tokenized_reviews_no_punctuation:
    new_term_vector = []
    for word in doc:
        if not word in stopwords.words('english'):
            new_term_vector.append(word)
    tokenized_reviews_no_stopwords.append(new_term_vector)

print tokenized_reviews_no_stopwords[:4]

len(tokenized_reviews_no_stopwords)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Fit Logistic regression
Can you write Python code for it?

from sklearn import linear_model
prediction = dict()
logreg = linear_model.LogisticRegression(C=1e5)
logreg.fit(X_train, Y_train)
prediction['Logistic'] = logreg.predict(X_test)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Fit Multinomial Naive Bayes
Can you write Python code for it?

from sklearn.naive_bayes import MultinomialNB
model = MultinomialNB().fit(X_train, Y_train)
prediction['Multinomial'] = model.predict(X_test)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Metrics
Can you write Python code for it?

%matplotlib inline
import numpy as np
from sklearn.metrics import confusion_matrix
from sklearn import metrics
from sklearn.metrics import roc_curve, auc
from nltk.stem.porter import PorterStemmer

def format(x):
    if x == 'negative':
        return 0
    return 1
vfunc = np.vectorize(format)

cmp = 0
colors = ['b', 'g', 'y', 'm', 'k']
for model, predicted in prediction.items():
    false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test.map(format), vfunc(predicted))
    roc_auc = auc(false_positive_rate, true_positive_rate)
    plt.plot(false_positive_rate, true_positive_rate, colors[cmp], label='%s: AUC %0.2f'% (model,roc_auc))
    cmp += 1

plt.title('Classifiers comparaison with ROC')
plt.legend(loc='lower right')
plt.plot([0,1],[0,1],'r--')
plt.xlim([-0.1,1.2])
plt.ylim([-0.1,1.2])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()

print(metrics.classification_report(Y_test, prediction['Logistic'], target_names = ["positive", "negative"]))

from sklearn.metrics import confusion_matrix

confusion_matrix(Y_test, prediction['Logistic'])

def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Blues):
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(set(scores)))
    plt.xticks(tick_marks, set(scores), rotation=45)
    plt.yticks(tick_marks, set(scores))
    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')

# Compute confusion matrix
cm = confusion_matrix(Y_test, prediction['Logistic'])
np.set_printoptions(precision=2)
plt.figure()
plot_confusion_matrix(cm)

cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
plt.figure()
plot_confusion_matrix(cm_normalized, title='Normalized confusion matrix')

plt.show()


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Read Data back for further processing
Can you write Python code for it?

dat = pd.read_pickle('amzreviews')

dat.head(5)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Removing punctuation
Can you write Python code for it?

import re
import string
regex = re.compile('[%s]' % re.escape(string.punctuation))

tokenized_reviews_no_punctuation = []

for review in tokenized_reviews:

    new_review = []
    for token in review:
        new_token = regex.sub(u'', token)
        if not new_token == u'':
            new_review.append(new_token)

    tokenized_reviews_no_punctuation.append(new_review)

print tokenized_reviews_no_punctuation[:3]

print len(tokenized_reviews_no_punctuation)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Stemming and Lemmatizing
Can you write Python code for it?

from nltk.stem.porter import PorterStemmer
porter = PorterStemmer()
preprocessed_docs = []
for doc in tokenized_reviews_no_punctuation:
#for doc in tokenized_reviews_no_stopwords:
    final_doc = []
    for word in doc:
        final_doc.append(porter.stem(word))
    preprocessed_docs.append(final_doc)

print preprocessed_docs[:4]

# to reduce memory
del tokenized_reviews
del tokenized_reviews_no_punctuation
#del tokenized_reviews_no_stopwords

len(preprocessed_docs)

final_reviews = []
for doc in preprocessed_docs:
    final_reviews.append((" ".join(doc)).lower())
print final_reviews[:2]

print len(final_reviews)

scores = dat['PScore'].tolist()[:10000]

len(scores)

from collections import Counter
Counter(scores)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
The plot shows that there are more positive reviews. Lets Split 4,5 as positive and 1,2,3 as negative reviews for our prediction
Can you write Python code for it?

def labelData(score):
    if score >= 4:
        return 'positive'
    return 'negative'

dat['PScore'] = dat['Score'].map(labelData)

dat[['Score','PScore']].head(5)


I am working on the file "Amazon Food Review.ipynb".
The first task is:
Tokenize words
Can you write Python code for it?

from nltk.tokenize import word_tokenize

tokenized_reviews = []

for doc in reviews:
    tokenized_reviews.append(word_tokenize(doc))
    if len(tokenized_reviews) % 10000 == 0:
        print len(tokenized_reviews)

tokenized_reviews[:3]


I am working on the file "Amazon Food Review.ipynb".
The first task is:
save dataframe to disk
Can you write Python code for it?


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
Bernoulli
Can you write Python code for it?

# Initialize and fit the model.

l3 = BernoulliNB()
l3.fit(X_trainvec, y_train)

# Predict on training set
predtrain_y = l3.predict(X_trainvec)

#Predicting on the test set

l3 = BernoulliNB()
l3.fit(X_testvec, y_test)

# Predict on training set
predtest_y = l3.predict(X_testvec)

#Evaluation of the model (testing)

target_names = ['0.0', '1.0']
print(classification_report(y_test, predtest_y, target_names=target_names))

confusion = confusion_matrix(y_test, predtest_y)
print(confusion)

# Accuracy tables.
table_test = pd.crosstab(y_test, predtest_y, margins=True)

test_tI_errors = table_test.loc[0.0,1.0] / table_test.loc['All','All']
test_tII_errors = table_test.loc[1.0,0.0] / table_test.loc['All','All']

print((
    'Bernouilli accuracy: {}\n'
    'Percent Type I errors: {}\n'
    'Percent Type II errors: {}\n\n'
).format(cross_val_score(l3,X_testvec,y_test,cv=kf).mean(),test_tI_errors, test_tII_errors))


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
Build Sentiment Scores and Categories
Can you write Python code for it?

amazonraw.overall.describe()

#Change the Overall variable into a categorical variable
#Ratings equal or lower than 3 have been considered negative as the mean is 4.25.
#The hypothesis is that although the abovmentioned ratings could be considered positive they are negative

amazonraw.loc[amazonraw['overall'] <= 3, 'Sentiment'] = 0
amazonraw.loc[amazonraw['overall'] >=4 , 'Sentiment'] = 1
amazonraw.loc[amazonraw['Sentiment'] == 0, 'Category'] ='Negative'
amazonraw.loc[amazonraw['Sentiment'] == 1, 'Category'] = 'Positive'

#Count the each of the categories

a = amazonraw['Category'].value_counts('Positive')
b = pd.value_counts(amazonraw['Category'].values, sort=False)

print('Number of ocurrencies:\n', b)
print('\n')
print('Frequency of each value:\n', a)

#Downsample majority class (due to computational restrictions we downsample the majority instead of upsampling the minority)

# Separate majority and minority classes
amazon_majority = amazonraw[amazonraw.Sentiment == 1]
amazon_minority = amazonraw[amazonraw.Sentiment == 0]

# Downsample mairlinesass
amazon_majority_downsampled = resample(amazon_majority, replace=False, n_samples=12590, random_state=123)

# Combine minority class with downsampled majority class
amazon = pd.concat([amazon_majority_downsampled, amazon_minority])

# Display new class counts
amazon.Category.value_counts()

#Graphical representation of the positive and negative reviews

plt.figure(figsize=(20, 5))

plt.subplot(1, 2, 1)

sns.set(style="white")
ax = sns.countplot(x="overall", data=amazonraw)
plt.title('Amazon Ratings')

plt.subplot(1, 2, 2)
sns.set(style="white")
ax = sns.countplot(x="Category", data=amazon)
plt.title('Categories in the downsampled dataset')

#Create new dataframe that has the Categories, Overall scores, Sentiment and ReviewText
names = ['Category',"overall",'Sentiment', "reviewText"]
amazon1 = pd.DataFrame(amazon, columns=names)
amazon.head()

#Lines are reshuffled and 50% of the dataset is used to reduce the computing effort
amazon2 = amazon1.sample(frac=1,...


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
Decision Tree
Can you write Python code for it?

# Train model
OTM = DecisionTreeClassifier()

#Create range of values to fit parameters

k2 = ['auto', 'sqrt', 'log2']

parameters = {'max_features': k2
         }

#Fit parameters

OTM1 = GridSearchCV(OTM, param_grid=parameters, cv=kf)

#Fit the tunned model
OTM1.fit(X_train_vectorized, y_train)

#The best hyper parameters set
print("Best Hyper Parameters:", OTM1.best_params_)

#Fit on test dataset
OTM1.fit(X_test_vectorized, y_test)

#Predict parameters on test dataset

predtestrf_y = OTM1.predict(X_test_vectorized)

#Test Scores
target_names = ['0', '1']
print(classification_report(y_test, predtestrf_y, target_names=target_names))
cnf = confusion_matrix(y_test, predtestrf_y)
print(cnf)

table_test = pd.crosstab(y_test, predtestrf_y, margins=True)

test_tI_errors = table_test.loc[0.0,1.0]/table_test.loc['All','All']
test_tII_errors = table_test.loc[1.0,0.0]/table_test.loc['All','All']

print((
    'Decision Tree accuracy:{}\n'
    'Percent Type I errors: {}\n'
    'Percent Type II errors: {}'
).format(cross_val_score(OTM1,X_test_vectorized,y_test,cv=kf).mean(),test_tI_errors, test_tII_errors))


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
Gradient Boosting
Can you write Python code for it?

#For the Gradient Boosting hyperparameters tuning,due to computational restrictions,
#grid search will be applied to one paramter at a time on the train set
#updating the value as we move along the hyperparameters tuning

#Number of trees

param_test1 = {'n_estimators':range(20,90,10)}
gsearch1 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1, min_samples_split=500,min_samples_leaf=50,max_depth=8,max_features='sqrt',subsample=0.8,random_state=10),
param_grid = param_test1, scoring='roc_auc',n_jobs=4,iid=False, cv=kf)
gsearch1.fit(X_train_vectorized, y_train)

gsearch1.grid_scores_, gsearch1.best_params_, gsearch1.best_score_

#Max depth and min sample split

param_test2 = {'max_depth':range(5,20,2), 'min_samples_split':range(200,1001,200)}
gsearch2 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1, n_estimators=80, max_features='sqrt', subsample=0.8, random_state=10),
param_grid = param_test2, scoring='roc_auc',n_jobs=4,iid=False, cv=kf)
gsearch2.fit(X_train_vectorized, y_train)
gsearch2.grid_scores_, gsearch2.best_params_, gsearch2.best_score_

#Re run the min_sample split with the min_sample leaf

param_test3 = {'min_samples_split':range(200,1001,200),'min_samples_leaf':range(30,71,10)}
gsearch3 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1, n_estimators=80,max_depth=19,min_samples_split=600,max_features='sqrt', subsample=0.8, random_state=10),
param_grid = param_test3, scoring='roc_auc',n_jobs=4,iid=False, cv=kf)
gsearch3.fit(X_train_vectorized, y_train)
gsearch3.grid_scores_, gsearch3.best_params_, gsearch3.best_score_

#Max features considering the results obtained
#for the combination of the 'min_samples_split', 'min_samples_leaf' and 'max_depth'
#The value of 600 has been maintained as it is the one that gives a better accuracy for every value of 'max_depth'

param_test4 = {'max_features':range(60,74,2)}
gsearch4 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1,...


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
KNN model
Can you write Python code for it?

# Initialize and fit the model
KNN = KNeighborsClassifier(n_jobs=-1)

#Create range of values to fit parameters

k1 = [1,3,5,7,9,11,13,15,17,19,21]
k3 = ['uniform', 'distance']

parameters = {'n_neighbors': k1,
          'weights':k3}

#Fit parameters

clf = GridSearchCV(KNN, param_grid=parameters, cv=kf)

#Fit the tunned model
clf.fit(X_train_vectorized, y_train)

#The best hyper parameters set
print("Best Hyper Parameters:", clf.best_params_)

#Initialize the model on test dataset

clf.fit(X_test_vectorized, y_test)

# Predict on test dataset

predtest3_y = clf.predict(X_test_vectorized)

#Evaluate model on the test set
target_names = ['0.0', '1.0']
print(classification_report(y_test, predtest3_y, target_names=target_names))

#Create confusion matrix
confusion = confusion_matrix(y_test, predtest3_y)
print(confusion)

# Accuracy tables.
table_test = pd.crosstab(y_test, predtest3_y, margins=True)

test_tI_errors = table_test.loc[0.0,1.0] / table_test.loc['All','All']
test_tII_errors = table_test.loc[1.0,0.0] / table_test.loc['All','All']

#Print Results
print((
    'KNN accuracy: {}\n'
    'Percent Type I errors: {}\n'
    'Percent Type II errors: {}\n\n'
).format(cross_val_score(clf,X_test_vectorized,y_test,cv=kf).mean(),test_tI_errors, test_tII_errors))


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
Logistic Model
Can you write Python code for it?

# Initialize and fit the model.

lr = LogisticRegression()

lr.fit(X_trainvec, y_train)

#Once the model has been trained test it on the test dataset
lr.fit(X_testvec, y_test)

# Predict on test set
predtest_y = lr.predict(X_testvec)

#Evaluate model (test set)
target_names = ['0.0', '1.0']
print(classification_report(y_test, predtest_y, target_names=target_names))

confusion = confusion_matrix(y_test, predtest_y)
print(confusion)

# Accuracy tables.
table_test = pd.crosstab(y_test, predtest_y, margins=True)

test_tI_errors = table_test.loc[0.0,1.0] / table_test.loc['All','All']
test_tII_errors = table_test.loc[1.0,0.0] / table_test.loc['All','All']

print((
    'Logistics accuracy: {}\n'
    'Percent Type I errors: {}\n'
    'Percent Type II errors: {}\n\n'
).format(cross_val_score(lr,X_testvec,y_test,cv=kf).mean(),test_tI_errors, test_tII_errors))


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
Random Forest
Can you write Python code for it?

#For the Random Forest hyperparameters tuning,due to computational restrictions,
#grid search will be applied to one paramter at a time on the train set
#updating the value as we move along the hyperparameters tuning

#Number of trees

param_test1 = {'n_estimators':range(300,400,20)}
gsearch1 = GridSearchCV(estimator = RandomForestClassifier(),
param_grid = param_test1, scoring='roc_auc',n_jobs=-1,iid=False, cv=kf)
gsearch1.fit(X_train_vectorized, y_train)

gsearch1.grid_scores_, gsearch1.best_params_, gsearch1.best_score_

#Max depth and min sample split
#Tried values for max depth from 2-60 with values under 0.8641. To find the value that increases accuracy
# the range between 60-80 is used
# min sample split values from 50-500 being the value between 80-120 the ones that increases accuracy

param_test2 = {'max_depth':range(61,80,2), 'min_samples_split': range(80,121,20)}
gsearch2 = GridSearchCV(estimator =  RandomForestClassifier(n_estimators = 360),
param_grid = param_test2, scoring='roc_auc',n_jobs=-1,iid=False, cv=kf)
gsearch2.fit(X_train_vectorized, y_train)
gsearch2.grid_scores_, gsearch2.best_params_, gsearch2.best_score_

#Re run the min_sample split with the min_sample leaf

param_test3 = {'min_samples_leaf':range(2,33,10)}
gsearch3 = GridSearchCV(estimator = RandomForestClassifier(n_estimators = 360, max_depth = 65 , min_samples_split = 80 ),
param_grid = param_test3, scoring='roc_auc',n_jobs=-1,iid=False, cv=kf)
gsearch3.fit(X_train_vectorized, y_train)
gsearch3.grid_scores_, gsearch3.best_params_, gsearch3.best_score_

#Based on the results shown for the minimum sample split, we will lwave it in the default number
#Re run the min_sample split with the min_sample leaf

param_test4 = {'criterion':['gini', 'entropy']}
gsearch4 = GridSearchCV(estimator = RandomForestClassifier(n_estimators = 360, max_depth = 65 , min_samples_split = 80),
param_grid = param_test4, scoring='roc_auc',n_jobs=-1,iid=False, cv=kf)
gsearch4.fit(X_train_vectorized, y_train)
gsearch4.grid_scores_, gsearch4.best_params_,...


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
SVC
Can you write Python code for it?

# Train model
svc = SVC()

#Create range of values to fit parameters
ks1 = np.arange(20)+1
ks4 =  ['linear','rbf']

parameters = {'C': ks1,
          'kernel': ks4}

#Fit parameters

svc1 = GridSearchCV(svc, param_grid=parameters, cv=kf)

#Fit the tunned model
svc1.fit(X_train_vectorized, y_train)

#The best hyper parameters set
print("Best Hyper Parameters:", svc1.best_params_)

#Fit tunned model on Test set
svc1.fit(X_test_vectorized, y_test)

# Predict on training set
predtestsvc_y = svc1.predict(X_test_vectorized)

#Test Scores
target_names = ['0.0', '1.0']
print(classification_report(y_test, predtestsvc_y, target_names=target_names))
cnf = confusion_matrix(y_test, predtestsvc_y)
print(cnf)

table_test = pd.crosstab(y_test, predtestsvc_y, margins=True)

print((
    'SVC accuracy:{}\n'
).format(cross_val_score(svc1,X_test_vectorized,y_test,cv=kf).mean(),test_tI_errors, test_tII_errors))


I am working on the file "Amazon+Reviews 180108.ipynb".
The first task is:
TFIDF
Can you write Python code for it?

vect2 = TfidfVectorizer(min_df=20, analyzer = 'word', stop_words = 'english',
                        ngram_range = (1,3)
                       ).fit(X_train)

X_train_vectorized = vect2.transform(X_train)
X_test_vectorized = vect2.transform(X_test)

features_names = vect2.get_feature_names()
print(len(features_names))


I am working on the file "AmazonReviewValidator.ipynb".
The first task is:
Applying NLP to review content
Sentiment analysis
Get the general sentiment from review content and visualize it over the time.
Using huggingface transformers for sentiment analysis.
Can you write Python code for it?

!pip install transformers
from transformers import pipeline

classifier = pipeline("sentiment-analysis")

def getSentiment(s):
  sentiment= classifier(s.content)
  label = sentiment[0].get('label')
  score = sentiment[0].get('score')
  #print(sentiment)
  if s.stars==5:
    s["sentiment_label"] = "POSITIVE"
    s["sentiment_score"] = 0.99
    return s

  s["sentiment_label"] = label

  s["sentiment_score"] = score if label=="POSITIVE" else 0
  return s
df=df.apply(getSentiment,axis=1)
#classifier(df.content.tolist())

sent_df = df.set_index('date')

sent_df = sent_df['sentiment_score'].to_frame()

#sent_df[['sentiment_score']].plot(label='Stars Over time',
#                                  figsize=(16, 8))

sent_df['SMA5'] = sent_df['sentiment_score'].rolling('90D').mean()

sent_df['CMA5'] = sent_df['sentiment_score'].expanding().mean()

# removing all the NULL values using
# dropna() method
sent_df.dropna(inplace=True)

# printing Dataframe
sent_df

sent_df[['SMA5','CMA5']].plot(label='Stars Over time',
                                  figsize=(16, 8))
sent_df.index

import matplotlib.pyplot as plt
import datetime as dt

fig = plt.figure(figsize=(20,5))
ax = fig.add_subplot(111)
ax.scatter(sent_df.index,sent_df['sentiment_score'], label='Review Sentiment')
ax.plot(sent_df.index,sent_df['SMA5'], color ='r', label='Rolling Mean')
ax.plot(sent_df.index,sent_df['CMA5'], color='y', label='Expanding Mean')
ax.set_xlim([dt.date(2019,1,15),dt.date(2022,5,21)])
ax.set(title='Amazon reviews over Time', xlabel='Date', ylabel='Sentiment')
ax.legend(loc='best')
fig.tight_layout()


I am working on the file "AmazonReviewValidator.ipynb".
The first task is:
Grouping data based on time interval.

Quarterly interval
Can you write Python code for it?

mva_df.resample('Q').stars.median()

mva_df.groupby([pd.Grouper(freq='Q'), 'stars']).agg(unique_items=('stars', 'sum'))


I am working on the file "AmazonReviewValidator.ipynb".
The first task is:
Majority belong to one topic and hence we could conclude that the reviews are geninue
Can you write Python code for it?

topic_model.visualize_barchart()

for i in range(3):
    print(topic_model.get_topic(i))


I am working on the file "AmazonReviewValidator.ipynb".
The first task is:
Topic modeling
If we find diverse topics in the review contents then the current product reviews might be dubious
Can you write Python code for it?

!pip install -U sentence-transformers
!pip install bertopic

from sklearn.feature_extraction.text import CountVectorizer
from nltk.stem.porter import PorterStemmer
from nltk import word_tokenize, WordNetLemmatizer
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')
nltk.download('wordnet')
nltk.download('punkt')


I am working on the file "AmazonReviewValidator.ipynb".
The first task is:
Visualization & Observations
Stars over the time
Can you write Python code for it?

mva_df = df.set_index('date')
mva_df = mva_df['stars'].to_frame()

# calculating simple moving average
# using .rolling(window).mean() ,
# with window size = 5
mva_df['SMA5'] = mva_df['stars'].rolling(5).mean()

# calculating exponential moving average
# using .ewm(span).mean() , with window size = 5
mva_df['EWMA5'] = mva_df['stars'].ewm(span=5).mean()

mva_df['CMA5'] = mva_df['stars'].expanding().mean()

# removing all the NULL values using
# dropna() method
mva_df.dropna(inplace=True)

# printing Dataframe
mva_df

mva_df[['EWMA5','CMA5']].plot(label='Stars Over time',
                                  figsize=(16, 8))


I am working on the file "AmazonReviewValidator.ipynb".
The first task is:
clean data
Can you write Python code for it?

stopwordSet = set(stopwords.words("english"))

lemma = WordNetLemmatizer()

def cleanup_sentences(sentence):
    text = re.sub('[^a-zA-Z0-9]'," ", sentence) #removing non alpha numeric
    text = text.lower() # convert to lower case.
    text = word_tokenize(text, language="english") # tokenize
    text = [lemma.lemmatize(word) for word in text if(word) not in stopwordSet] # Lemmatizing words and removing stopwords
    text = " ".join(text)
    return text

df['content_cleaned'] = df['content'].apply(cleanup_sentences)

from bertopic import BERTopic
from sentence_transformers import SentenceTransformer

#sentence-transformers/all-roberta-large-v1: This is a sentence-transformers model:
#It maps sentences & paragraphs to a 1024 dimensional dense vector space and can be used for tasks like clustering or semantic search.
sentence_model = SentenceTransformer("sentence-transformers/all-roberta-large-v1")
topic_model = BERTopic(embedding_model=sentence_model, calculate_probabilities = True, verbose = True, diversity = 0.2)

#train
docs = df['content_cleaned'].to_list()
topics, probabilities = topic_model.fit_transform(docs)

topic_freq = topic_model.get_topic_info()
topic_freq.head(5)


I am working on the file "AmicalSat/ShockBurst image packets.ipynb".
The first task is:
The CRC used in ShockBurst frames CRC16_CCITT_FALSE from this online calculator. Since the 0xE7E7E7E7E7 address is included in the CRC calculation but is missing in our data, we take this into account by modifying the initial XOR value.
Can you write Python code for it?


I am working on the file "AmicalSat/ShockBurst image packets.ipynb".
The first task is:
The data shockburst.u8 contains ShockBurst frames without the 0xE7E7E7E7E7 address header (including frame counter, image payload and CRC). It has been obtained with nrf24.grc.
Can you write Python code for it?

data = np.fromfile('/home/daniel/debian_testing_chroot/tmp/shockburst.u8', dtype = 'uint8').reshape((-1,34))


I am working on the file "AmicalSat/ShockBurst image packets.ipynb".
The first task is:
Write frames to a file according to their frame number. We do a majority voting to select among different frames with the same frame number (there are corrupted frames with good CRC). The file has gaps with zeros where frames are missing.
Can you write Python code for it?

frame_size = 30
with open('/tmp/file', 'wb') as f:
    for count in frame_count_unique:
        valid_frames = data[crc_ok][frame_count == count]
        counter = Counter([bytes(frame[2:]) for frame in valid_frames])
        f.seek(count * frame_size)
        f.write(counter.most_common()[0][0])


I am working on the file "AmicalSat/in_orbit/2020-10-05/ShockBurst image packets.ipynb".
The first task is:
The CRC used in ShockBurst frames CRC16_CCITT_FALSE from this online calculator. Since the 0xE7E7E7E7E7 address is included in the CRC calculation but is missing in our data, we take this into account by modifying the initial XOR value.
Can you write Python code for it?


I am working on the file "AmicalSat/in_orbit/2020-10-05/ShockBurst image packets.ipynb".
The first task is:
The data shockburst.u8 contains ShockBurst frames without the 0xE7E7E7E7E7 address header (including frame counter, image payload and CRC). It has been obtained with nrf24.grc.
Can you write Python code for it?

data = np.fromfile('shockburst.u8', dtype = 'uint8').reshape((-1,34))


I am working on the file "An_Identiconizer_generator_implementation_in_Python.ipynb".
The first task is:
And every parameter can be changed and tuned.
Can you write Python code for it?

for _ in range(10):
    im = identicon2(size=128)
    im

mylist = [identicon2() for _ in range(10)]


I am working on the file "An_Identiconizer_generator_implementation_in_Python.ipynb".
The first task is:
List of vignettes
Let's use this technique
Can you write Python code for it?

import base64

from IPython.display import Image
from IPython.display import HTML

def tag_from_data(data, size='100%'):
    return (
        '''
           ''').format(''.join(base64.encodebytes(data).decode().split('\n')), size)

import io

def im2bytes(im):
    buffer = io.BytesIO()
    im.save(buffer, format="png")
    return buffer.getvalue()

HTML(tag_from_data(im2bytes(im)))

class VignetteList:
    def __init__(self, *images, size=None):
        self.images = images
        self.size = size

    def _repr_html_(self):
        return '
'+','.join(tag_from_data(im2bytes(im), self.size)  for im in self.images)+'
'

VignetteList(*mylist, size='200px')

def tag_from_data_II(data, size='100%'):
    return ''''''.format(''.join(base64.encodebytes(data).decode().split('\n')), size)

def html_list_formatter(ll):
    html = get_ipython().display_formatter.formatters['text/html']
    reps = []
    for o in ll:
        if isinstance(o, Image):
            reps.append(tag_from_data_II(o.data, '200px') )
        elif isinstance(im, PILImage.Image):
            reps.append(tag_from_data_II(im2bytes(o), '200px') )
        else:
            h = html(o)
            if h:
                reps.append(h)
            else:
                reps.append(repr(o)+'')

    return '['+','.join(reps)+']'

ipython =...


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:

Aggiungo due colonne con pos neg in base al cut-off

Can you write Python code for it?


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:
<h4> Test esatto di Fisher</h4>
Can you write Python code for it?

# test esatto di Fisher
oddsratio, pvalue =fisher_exact(pd.crosstab(database.cap_PN,database.rut_PN))
print ('valore di p:{}'.format(pvalue))


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:

Calcolo la tabella delle frequenze

 modulo utilizzato scipy.stat   http://docs.scipy.org/doc/scipy/reference/stats.html
Can you write Python code for it?

#sci.py moduli
from scipy.stats import chi2_contingency, fisher_exact
pd.crosstab(database.cap_PN,database.rut_PN)

ax=pd.crosstab(database.cap_PN,database.rut_PN).plot(kind='bar',stacked=True, )
ax.legend(['Neg','Pos'])
ax.set_xlabel(CAP)


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:
Creo colonne con Positivo negativo dubbio in base ai cut off secificati dalle ditte
Can you write Python code for it?

def discret_cap(x):
    if x<2.9:
        return 'N'
    elif x>=3.3:
        return 'P'
    else:
        return 'D'

def discret_bra(x):
    if x<1:
        return 'N'
    elif x>=1.5:
        return 'P'
    else:
        return 'D'

database['cap_PND']=database['valore_cap'].apply(discret_cap)
database['rut_PND']=database['valore_rut'].apply(discret_bra)

database.head(12)

pd.crosstab(database.cap_PND,database.rut_PND)

ax=pd.crosstab(database.cap_PND,database.rut_PND).plot(kind='bar',stacked=True, )
ax.legend(['Bra Dub','Bra Neg','Bra Pos'])
ax.set_xlabel(CAP)


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:
Creo una colonna che assume valore positivo solo nel caso in cui i due metodi abbiano dato valore opposto N con P o vieceversa)
Can you write Python code for it?

def no_match(x):
    if (x['cap_PND']==x['rut_PND']or x['cap_PND']=='D' or x['rut_PND']=='D'):
        return 0
    else:
        return 1

#df.apply(lambda row: my_test(row['a'], row['c']), axis=1)

database['mismatch']=database.apply(no_match,axis=1)
#database['valore_cap'].apply(discret_cap)
per_disc=round(100*database['mismatch'].sum()/database['mismatch'].count(),2)
database.head(20)

print("classificazioni deiverse: {} su un totale di {}".format(database['mismatch'].sum(),database['mismatch'].count()))
print(" pecentuale di discordanza e dello {}%".format(per_disc))


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:
Varibili d'ambiete in comune
Can you write Python code for it?

#variabili d'ambiente comuni
cutoff_cap=2.9 #tre 2.9 r 3.3 dubbi
#cutoff_cap=3.3
cutoff_rout=1 #brahms 1-1.5 dubbi
METODO_ROUTINE="Brahms Trak Human LIA"
#METODO_ROUTINE="Siemens Immulite 2000 Chemil."
CAP="Thermo Fisher ELIA anti-TSH-R Cap250 "


I am working on the file "Analisi thibya Brahms.ipynb".
The first task is:
eseguiamo ora lo studio di regressione con tre modelli diversi
<font color='red'>Moduli statmodels e scipy </font>
Can you write Python code for it?

# con statmodel : regressione minimi quadrati
##res_ols = sm.OLS(y, statsmodels.tools.add_constant(X)).fit() per vecchia versione
import statsmodels.api as sm
#sm.OLS(Y,X)
X = sm.add_constant(database.valore_rut )
modello_minquad=sm.OLS(database.valore_cap,X)
regressione_minquad=modello_minquad.fit()
regressione_minquad.summary()

# con statmodel : regressione robusta (Robust Linear Model)
X = sm.add_constant(database.valore_rut)
modello=sm.RLM(database.valore_cap,X)
regressione_robusta=modello.fit()
regressione_robusta.summary()

#importo la librearia seborn per una migliore visualizzazione grafica

sns.set(color_codes=True)
ax = sns.regplot(x=database.valore_rut,y=database.valore_cap,  color="g",robust=True)
ax = sns.regplot(x=database.valore_rut,y=database.valore_cap,  color="b")
ax.set_title('Regressione lineare  OLS + RLM ')
ax.set_xlabel(METODO_ROUTINE)
ax.set_ylabel(CAP)
ax.set(ylim=(0, None))
ax.set(xlim=(0, None))

sns.set(color_codes=True)
ax2 = sns.regplot(x=database.valore_rut,y=database.valore_cap,  color="g",robust=True)
ax2 = sns.regplot(x=database.valore_rut,y=database.valore_cap,  color="b")
ax2.set_title('Regressione lineare  OLS + RLM ')
ax2.set_xlabel(METODO_ROUTINE)
ax2.set_ylabel(CAP)
ax2.set(ylim=(0, 20))
ax2.set(xlim=(0, 8))

ax=sns.jointplot(x=database.valore_rut,y=database.valore_cap, kind="reg");
ax.set_axis_labels(METODO_ROUTINE,CAP)


I am working on the file "Analisi thibya Imm2000.ipynb".
The first task is:
-
<h2> Analisi della regressione</h2>
Can you write Python code for it?

# grafico di dispersione
import matplotlib.pyplot as plt
fig = plt.figure()
fig.suptitle('Scatterplot', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)
ax.set_xlabel(METODO_ROUTINE)
ax.set_ylabel(CAP)
ax.plot(database.valore_rut,database.valore_cap,'o')
plt.show()


I am working on the file "Analisi thibya Imm2000.ipynb".
The first task is:

Aggiungo due colonne con pos neg in base al cut-off

Can you write Python code for it?


I am working on the file "Analisi thibya Imm2000.ipynb".
The first task is:
<h4> Test esatto di Fisher</h4>
Can you write Python code for it?


I am working on the file "Analisi thibya Imm2000.ipynb".
The first task is:

Calcolo la tabella delle frequenze

 modulo utilizzato scipy.stat   http://docs.scipy.org/doc/scipy/reference/stats.html
Can you write Python code for it?


I am working on the file "Analisi thibya Imm2000.ipynb".
The first task is:
Ortogonal Distance Regression (Deming Regression)
Can you write Python code for it?

# regressione ODR  (ortogonal distance regression Deming)
import scipy.odr as odr
#modello di fitting
def funzione(B,x):
    return B[0]*x+B[1]
linear= odr.Model(funzione)
variabili=odr.Data(database.valore_rut,database.valore_cap)
regressione_ortogonale=odr.ODR(variabili,linear,beta0=[1., 2.])
output=regressione_ortogonale.run()
output.pprint()
output


I am working on the file "Analisi thibya Imm2000.ipynb".
The first task is:
Varibili d'ambiete in comune
Can you write Python code for it?

#variabili d'ambiente comuni
cutoff_cap=2.9 #tre 2.9 r 3.3 dubbi
#cutoff_cap=3.3
#cutoff_rout=1 #brahms 1-1.5 dubbi
cutoff_rout=0.55 #Siemens
METODO_ROUTINE="Siemens Immulite 2000 Chemil."
CAP="Thermo Fisher ELIA anti-TSH-R Cap250 "