1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#!/usr/env python 3
import numpy as np
import pandas as pd
from numpy import linalg as NO
from numpy import linalg as LA
#Chargement des datas
dataset = pd.read_csv('winequality-white.csv')
#print (dataset.head())
#Création des variables
#Z = matrice Z
#y = vecteur y
Z = dataset[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol']] #the relevant column name
y = dataset['quality'] #Variable indépendante
#print ("Dataset in running....\n\n\n")
#print ("Dataset is .....\n\n\n")
#print (Z,y) #affichage du dataset final
#Question 3 -calcul de beta Z avec la formule
print ("Résidus en cours de calcul .\n\n")
print ("=============================\n\n")
#calcul de (Z ^T *Z)
ZTZ = np.dot(Z.T,Z)
#=debug
#print (ZTZ)
#calcul (Z ^T Z)^-1
Zinv = np.linalg.inv(np.dot(Z.T, Z))
#=debug
#print (Zinv)
#construction de beta
betaZ = np.dot(Zinv, Z.T) @ y
#=debug
#print ("Beta Z devient : \n\n",betaz)
##calculs des résidus
#Z * betaZ -> norme 2
ZbetaZ = np.dot(Z, betaZ)
normeZ = LA.norm(ZbetaZ)
#=debug
#print ("Zbetaz devient : \n\n",normeZ)
#norme 2 de y
norme_y = LA.norm(y)
#print ("Norme 2 de y", norme_y)
#Z * betaZ - y => norme 2
residus = np.subtract(normeZ,norme_y)
residus_1 = np.square(residus)
print ("Résidus question 3 : \n",residus_1)
#Question 4
#Implémentation de la matrice Z
#Matrice X est son résulat
dataset_Z = dataset[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol']]
dataset[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol']] = (dataset_Z -dataset_Z.mean())/ dataset_Z.std()
#X est la nouvelle matrice après standardisation
X = dataset
#print (X)
#calcul de (X ^T *X)
XT = np.dot(X.T,X)
#=debug
#print (XT)
#calcul de X inverse
Xinv = np.linalg.inv(np.dot(X.T,X))
#=debug
#print (Xinv)
#beta
betaX = np.dot(Xinv,X.T) @ y
#=debug
#print ("Beta X devient : \n\n",betaX)
##calculs des résidus
#Z * betaX -> norme 2
XbetaX = np.dot(X,betaX)
normeX = LA.norm(XbetaX)
#=debug
#print ("XbetaX devient : \n\n",normeX)
#norme 2 de y
norme_y = LA.norm(y)
#print ("Norme 2 de y", norme_y)
#X * betaX - y => norme 2
residusX = np.subtract(normeX,norme_y)
residusX_1 = np.square(residusX)
print ("Résidus question 4 : \n",residusX_1) |
Partager