Aprendizaje Supervisado

Machine Learning

import matplotlib.pylab as plt

Anatomía de las gráficas en matplotlib tomado de: https://pbpython.com/effective-matplotlib.html

image.png

Figura \ Marcadores \ Colores \ Marcadores

lista = ["daniela", "alex", "juan", "rocio"]

for dato in enumerate(lista):
  print(dato)
for i, nombre in enumerate(lista):
  print(i, " ", nombre)

Anotaciones sobre puntos en un mapa de dispersión (scatterplot)

y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
x = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
fig, ax = plt.subplots()
ax.scatter(x,y)
fig, ax = plt.subplots()

ax.scatter(x,y)

for i, txt in enumerate(n):
  ax.annotate(txt, (x[i], y[i]))

ax.annotate("diplomado", (0.5, 3), c="r", size=18)
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
x = [1.6676, 6.6234, 1.523434, 6.234234 ,5.6345]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]

fig, ax = plt.subplots()


ax.scatter(z, y, marker="v", c="b")
ax.scatter(z, x, marker=".", c="r")
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
x = [1.6676, 6.6234, 1.523434, 6.234234 ,5.6345]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]

fig, ax = plt.subplots()


ax.scatter(z, y, marker="v", c="b")
ax.scatter(z, x, marker=".", c="#FF00FF")
ax.scatter(z, x, marker=".", c=(0.2, 0.1, 0.3))
import matplotlib.pyplot as plt
plt.figure()

#plt.plot([0, 1], [0, 1], 'r-')
plt.plot([0, 1], [0, 1], c = 'r', ls='-')
plt.xlim([-2.0, 2.0])
plt.ylim([-2.0, 2.0])
plt.title('Test figure')

#plt.show()
import matplotlib.pyplot as plt
plt.figure()
plt.plot?
#plt.plot([0, 1], [0, 1], 'r-.')
plt.plot([0, 1], [0, 1], c="r", linestyle='-.')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.title('Test figure')

#plt.show()
import matplotlib.pyplot as plt
plt.figure()

plt.plot([0, 1], [0, 1],'r-.')
plt.plot([0, 1], [0.5, 0.5],'b--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.title('Test figure')

#plt.show()
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(4,4))
ax.bar(x=['A','B','C'], height=[3.1,7,4.2], color='r')
ax.set_xlabel(xlabel='X title', size=70)
ax.set_ylabel(ylabel='Y title' , color='b', size=20)
ax.tick_params(which="major", color="g")
for tick in ax.xaxis.get_major_ticks():
      tick.label.set_fontsize(24)
      tick.label.set_rotation(45)
plt.show()
plt.tight_layout()
fig, ax = plt.subplots(figsize=(3,3))
ax.plot(['Daniela','Pedro','Alex'], [4,6,3], color='r')
ax.set_xlabel('TITLE 1')
for tick in ax.get_xticklabels():
    tick.set_rotation(45)
plt.show()
import numpy as np
x = np.array(range(10))
plt.plot(x, x**2, x**3)
import numpy as np
x = np.array(range(10))
plt.plot(x, x**2)
plt.plot(x, x**3)
plt.legend(["$x^1 \mathbb{R} \gamma$", "$x^3$"])
import numpy as np
fig, ax = plt.subplots()
x = np.array(range(10))
ax.plot(x, x**2)
ax.plot(x, x**3)
ax.legend(["$x^1 \mathbb{R} \gamma$", "$x^3$"])
ax.annotate("colombia", (6.5, 700), c="r", size=18)
ax.annotate("peru", (8.5, 80), c="r", size=18)
import numpy as np
x = np.array(range(10))
plt.plot(x, x**2)
plt.plot(x, x**3)
plt.legend(["$x^1 \mathbb{R} \gamma$", "$x^3$"],loc="lower left")
import numpy as np
x = np.array(range(10))
plt.plot(x, x**2)
plt.plot(x, x**3)
plt.legend(["$x^1 \mathbb{R} \gamma$", "$x^3$"],loc=(0.2, 0.4))
import numpy as np
fig, ax = plt.subplots(1,1, figsize=[3,5], dpi=100)
x = np.array(range(10))

plt.plot(x, x**2)
plt.plot(x, x**3)
plt.legend(["$x^1 \mathbb{R} \gamma$", "$x^3$"])

axes = fig.add_axes([1, 0, 1.3, 1])

axes.plot(x, x**2)
axes.plot(x, x**3)
axes.legend(["$x^1 \mathbb{R} \gamma$", "$x^3$"])
plt.show()

import numpy as np
x = np.array(range(10))
plt.plot(x, x**2, label = "$x^2 \mathbb{R} \gamma$")
plt.plot(x, x**3, label = "$x^3$")
plt.legend()
plt.bar(x, x**2)
mu, sigma = 0, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 100000)

plt.hist(s)
#plt.hist(s, density=True)
mu, sigma = 0, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 1000)

outliers = np.array([0.90, 0.92,0.91,0.904])

s = np.concatenate((s, outliers))
plt.hist(s)
mu, sigma = 0, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 1000)

outliers = np.array([0.90, 0.92,0.91,0.904])

s = np.concatenate((s, outliers))

fig, ax = plt.subplots(1,2, figsize=[10,5])

ax[0].boxplot(s)
ax[1].hist(s)


fig, ax = plt.subplots(1,2, figsize=[10,5])

ax[0].boxplot(s)
ax[1].hist(s)
from scipy import stats
mu, sigma = 0, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 10000)
plt.hist(s, density=True, bins = 50)

xx = np.linspace(-1, 1, 10000)
kde = stats.gaussian_kde(s)
plt.plot(xx, kde(xx))
from scipy import stats
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(41)

N = 100
x = np.random.randint(0, 9, N)
bins = np.arange(10)

kde = stats.gaussian_kde(x)
xx = np.linspace(0, 9, 1000)
fig, ax = plt.subplots(figsize=(8,6))
ax.hist(x, density=True, bins=bins, alpha=0.3)
ax.plot(xx, kde(xx))
# Kernel density estimation
# libraries & dataset
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('iris')

# set seaborn style
sns.set_style("white")

# Basic 2D density plot
sns.kdeplot(x=df.sepal_width, y=df.sepal_length)
plt.show()

# Custom the color, add shade and bandwidth
figura = sns.kdeplot(x=df.sepal_width, y=df.sepal_length, cmap="Reds", shade=True, bw_adjust=.5)
print(type(figura))
print(dir(figura))
figura.set_title("titulo")
#plt.title("titulo")
plt.show()

# Add thresh parameter
sns.kdeplot(x=df.sepal_width, y=df.sepal_length, cmap="Blues", shade=True, thresh=0)
plt.show()
# library & dataset
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('iris')

# Custom the inside plot: options are: “scatter” | “reg” | “resid” | “kde” | “hex”
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='scatter')
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='scatter', marker="+", s=100, marginal_kws=dict(bins=25, fill=False),)
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='scatter', height=5, ratio=2, marginal_ticks=True)
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='hex')
g = sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='kde')

g.plot_joint(sns.kdeplot, color="r", zorder=0, levels=6)
g.plot_marginals(sns.rugplot, color="r", height=-.15, clip_on=False)

plt.show()

5.1. Método heatmap


Para que un mapa de calor funcione correctamente, sus datos ya deberían estar en forma de matriz. La función de heatmap colorea los mapas de calor por usted. Por ejemplo:

import seaborn as sns
tips = sns.load_dataset('tips') # Retorna un DataFrame de pandas.
tips.head()
tabla = pd.crosstab(index = tips["time"], columns = tips["sex"])
tabla
sns.heatmap(tabla)

Recordemos que la función corr de pandas retorna una matriz con los valores de correlación entre pares de columnas numéricas. De esta manera, los indices horizontales y verticales del DataFrame retornado son los nombres de las columnas con valores numéricos de la matriz original, los valores de la matriz retornada son los coeficientes de correlación entre los correspondientes pares de índices que se interceptan:

tips.corr()  #Retorna la matriz de correlaciones para pares de columnas con valor numérico.

from scipy.stats import kendalltau, pearsonr, spearmanr
pearsonr?
#get the p values
pval = tips.corr(method=lambda x, y: pearsonr(x, y)[1])
pval = pval - np.eye(pval.shape[0])

Ahora, usamos la función heatmap para generar el mapa de calor de la matriz de correlación retornada por corr.

pval.iloc[0,0] = "Nohaycorrelación"
pval
sns.heatmap(tips.corr(), annot = pval, fmt="");

Para este caso, el diagrama permite identificar mediante tonos de colores los coeficientes de correlación. Como es de suponer, la diagonal representa la intersección de una columna consigo misma por lo que su valor de correlación es igual a $1.0$.

Es posible incluir en la matriz el valor correspondiente a los coeficientes de correlación ajustando el parámetro annot en True:

sns.heatmap(tips.corr(),
            annot=True,       # Se muestran los textos correspondientes.
            fmt=r'.2f',       # Formato de la cadena de texto asociada. (2 dígitos decimales)
            cmap='coolwarm'); # Colormap usado en la visualización.
import pandas as pd
import matplotlib.pyplot as plt

datos = pd.read_csv("casasboston.csv")
#datos = datos[["RM","CRIM", "MEDV", "TOWN", "CHAS", "INDUS", "LSTAT"]]
df = datos[["RM","CRIM", "MEDV", "TOWN", "CHAS"]]

df = datos.rename(columns={
	"TOWN":"CIUDAD",
	"CRIM":"INDICE_CRIMEN",
	"INDUS":"PCT_ZONA_INDUSTRIAL",
	"CHAS":"RIO_CHARLES",
	"RM":"N_HABITACIONES_MEDIO",
	"MEDV":"VALOR_MEDIANO",
	"LSTAT":"PCT_CLASE_BAJA"
})

print (df.sample(5))
valor_por_ciudad = df.groupby("CIUDAD")["VALOR_MEDIANO"].mean()
valor_por_ciudad.head(10).plot.barh()
plt.show()
pd.qcut(df.VALOR_MEDIANO, 5)
df["VALOR_CUANTILES"] = pd.qcut(df.VALOR_MEDIANO, 5)
df.boxplot(column="INDICE_CRIMEN", by="VALOR_CUANTILES",
	figsize=(8,6))
plt.show()
df["VALOR_CUANTILES"]
df.RIO_CHARLES.value_counts().plot.pie()
plt.show()
df.plot.scatter(x="INDICE_CRIMEN", y="VALOR_MEDIANO", alpha=0.2)
plt.show()
df.INDICE_CRIMEN.plot.hist(bins=100, xlim=(0,20))
plt.show()
df.N_HABITACIONES_MEDIO.plot.hist()
plt.show()
# library & dataset
import seaborn as sns
df = sns.load_dataset('iris')
import matplotlib.pyplot as plt

# Basic correlogram
sns.pairplot(df)
df = pd.read_csv('Pokemon.csv', index_col = 0)
df.head()
sns.lmplot(x="Attack", y="Defense", data=df)
sns.lmplot(x="Attack", y="Defense", data=df, fit_reg = False, hue="Stage")
sns.lmplot(x="Attack", y="Defense", data=df, fit_reg = False, hue="Stage")
plt.ylim(0, None)
plt.xlim(0, None)
sns.boxplot(data=df)
stats_df = df.drop(["Total", ])
df.head()
media_por_tipo_1_total = df.groupby("Type 1").mean()['Total']
media_por_tipo_1_Attack = df.groupby("Type 1").mean()['Attack']
media_por_tipo_1_total - media_por_tipo_1_Attack
df.groupby("Type 1").mean()['Total'] - df.groupby("Type 1").mean()['Attack']
for

Pepe

variable = "edad"
variable_dependiente = "tension"

formula = f"{variable} ~ {variable_dependiente}"
formula
variable = "edad"
variable_dependiente = "tension"

formula = variable + " ~ " + variable_dependiente
formula
datos.info()
datos["LON"] = datos["LON"].astype(str)
datos.info()
datos["LON"] = datos["LON"].astype("category")
type(datos["LON"][0])
fig1  = plt.figure()

axmajor = fig1.add_axes([0, 0, 2, 2])
fig1.add_axes([1, 1, 0.5, 0.5])

set_xlim(0,20)
set_ylim(0,400)

Titulos

Subtitulos

subsubtitulos

  • listas
  • listas
código

link text

  1. List item
  2. List item

https://www.markdownguide.org/basic-syntax/

fig, ax = plt.subplots(2,2)
ax.shape
fig, ax = plt.subplots(2,2)
ax[0][0].grid(True)

Escala logarítmica

import numpy as np
# Datos usados en este material.

x = np.linspace(0, 5, 10)
y = x**2
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 3, figsize=(10,4))

#Escala lineal
axes[0].plot(x, x**2,  label="x**2")
axes[1].plot(x, np.exp(x),  label="e**x")
axes[2].plot(x, x**5, label="x**5")
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(10,4))

#Escala lineal
axes[0].plot(x, x**2,  label="x**2")
axes[0].plot(x, np.exp(x),  label="e**x")
axes[0].plot(x, x**5, label="x**5")
axes[0].set_title("Escala lineal")


#Escala logarítmica
axes[1].plot(x, x**2,  label="x**2")
axes[1].plot(x, np.exp(x),  label="e**x")
axes[1].plot(x, x**5, label="x**5")
axes[1].legend()

#########################
axes[1].set_yscale("log")
##########################

axes[1].set_title("Escala logarítmica (en $y$)");

Raw Strings (cadena de caracteres cruda)

"\n Esto es una cadena de carácteres cruda \t. Esta no compila los salto de liena ni los tabuladores."
print("\n Esto es una cadena de carácteres cruda \t. Esta no compila los salto de liena ni los tabuladores.")
r"\n Esto es una cadena de carácteres cruda \t. Esta no compila los salto de linea ni los tabuladores."
print(r"\n Esto es una cadena de carácteres cruda \t. Esta no compila los salto de linea ni los tabuladores.")

This website is copyright 2023 All Shaman