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