martes, 20 de agosto de 2019

Data Science: Coeficiente de Correlación de Pearson

Vamos a ver cómo calcular el coeficiente de correlación de Pearson con Python:

Primero vamos a ver, de forma muy resumida, la teoría matemática:



Una vez vista la teoría, vamos a la práctica.

Abrimos el Jupyter y empezamos a escribir:

# Importamos las librerías:
%config IPCompleter.greedy=True
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Cargamos el fichero en un dataFrame:
data_ads = pd.read_csv("python-ml-course-master/datasets/ads/Advertising.csv")
data_ads.head()


# Calculamos de forma manual el coeficiente de correlación de Pearson mediante una función:
def corr_coeff(dataFrame, var1, var2):
dataFrame["corrn"] = (dataFrame[var1] - np.mean(dataFrame[var1])) * (dataFrame[var2] - np.mean(dataFrame[var2]))
dataFrame["corr1"] = (dataFrame[var1] - np.mean(dataFrame[var1])) ** 2
dataFrame["corr2"] = (dataFrame[var2] - np.mean(dataFrame[var2])) ** 2
coeficienteCorrelacionPearson = sum(dataFrame["corrn"]) / np.sqrt(sum(dataFrame["corr1"]) * sum(dataFrame["corr2"]))
return coeficienteCorrelacionPearson

# Llamamos a la función para calcular la correlación entre las columnas Televisión y Ventas:
corr_coeff(data_ads, "TV", "Sales")


# Creamos un bucle que calcule todas las correlaciones entre todas las columnas del dataFrame:
cols = data_ads.columns.values
for x in cols:
for y in cols:
print(x + ", " + y + " : " + str(corr_coeff(data_ads, x, y)))


# Pintamos un gráfico de nube de puntos para visualizar la correlación:
plt.plot(data_ads["TV"], data_ads["Sales"], "ro")
plt.title("Gasto en TV vs Ventas del Producto")


# Calculamos el coeficiente de correlación de Pearson entre columnas de forma automática con pandas:
data_ads.corr()


# Generamos una matriz de correlaciones entre los diferentes campos:
plt.matshow(data_ads.corr())


Y eso es todo.

No hay comentarios:

Publicar un comentario