Lea los datos
Comencemos una demostración analizando los datos que muestran cómo varía el peso de un adolescente en función del número de horas que juega a los videojuegos.
Voy a importar la biblioteca de los pandas, leer los datos del csv e imprimirlos. Para simplificar, asumimos que los datos ya están normalizados y que no faltan elementos. En otras palabras, los datos pueden ser usados tal cual en nuestro proceso de desarrollo de modelos.
12345importar pandas como pddf = pd.read_csv($0027grados.csv$0027)print(df)
Esto debería imprimir los datos que son la fuente de nuestro modelo.
123456789101112 Play_Hours Peso 1 145 2 157 3 166 4 173 5 176 6 179 7 181 8 190 9 196 10 200
A partir de los datos, es obvio que se trata de datos continuos y que se modelarán mejor con un algoritmo de regresión. Vamos a utilizar un algoritmo de regresión lineal en esta demostración.
Ajustar los datos
Vamos a importar el paquete de Scikit y crear el objeto de regresión lineal:
123importar sklearn.linear_model as sklr = sk.LinearRegression()
Vamos a importar un paquete numérico, usar su nuevo objeto de eje, y convertir el eje x en una matriz 2D para que podamos pasar los valores de los ejes x y y a la regresión lineal y realizar una operación de ajuste. La operación de ajuste aplica los datos al algoritmo de regresión lineal y produce un modelo de aprendizaje automático que se ajusta mejor a los datos.
123456importar numpy as npx = df.Play_Hours[:, np.newaxis]y = df.Weight.valueslr.fit(x,y)
Imprimamos los valores de intercepción y de coef . Una ecuación lineal se representa en la forma de Y = mX +c donde m es la pendiente de la línea y c es la intercepción. La pendiente y la intercepción definen la relación que existe entre las dos variables. Una vez identificados estos dos valores, podemos utilizarlos para predecir cualquier valor futuro. Digamos que queremos saber el peso de un adolescente que juega a los videojuegos durante 15 horas al día; podemos usar este modelo para predecir su peso. En este caso, el número de horas jugadas (X) es una variable independiente y el peso de los adolescentes (Y) es la variable dependiente.
123print("Intercept - c:", lr.intercept_)print("Coeff - m:", lr.coef_)
Debería ver una salida similar a la de abajo que enumera los valores de intercepción y de coeficiente. La intercepción es ese valor cuando el valor de la variable independiente es 0 o el punto en el gráfico para X = 0 y el coeficiente es la pendiente de la línea.
12Interceptar -c: 145.8Coeff -m: [5.54545455]
Predecir los datos
Trazamos este gráfico y veamos los resultados visualmente. Importa el paquete matplotlib como se muestra a continuación. Ahora que tenemos un modelo básico, veamos cómo podemos usar este modelo para predecir los datos de las pruebas. Usamos el objeto de predicción para predecir los valores de las pruebas, como se muestra a continuación.
1234567importar matplotlib.pyplot como pltpredict = lr.predict([[6]])plt.scatter(x, y, color=$0027black$0027)plt.plot(x, lr.predict(x), color=$0027blue$0027, linewidth=3)
Ahora que hemos predicho el valor, veamos qué tan buena es esta predicción. Usaremos tres métricas diferentes para evaluar el rendimiento de esta predicción.
- Error de la media cuadrática de la raíz (RMSE)
Error medio absoluto
Para un valor dado de X, si Y es el valor predicho e Y$0027 es el valor real, el Error Medio Absoluto (MSE) se calcula como la suma de las diferencias absolutas entre los valores predichos y los reales dividida por el número total de entidades.
Tomar el error absoluto es muy importante en este caso. Si no, el error positivo negaría el error negativo y el resultado sería erróneo. Calculemos el MSE usando sklearn.
1234567de sklearn.metrics import mean_absolute_errordf[$0027predict$0027] = lr.predict(x)print(mean_absolute_error(df.Weight, df.predict))2.290909090909088
Error de la media cuadrática de la raíz (RMSE)
RMSE es la raíz cuadrada de la media de los errores cuadrados. Un valor inferior de RMSE significa que el rendimiento del modelo es bueno, ya que RMSE muestra cuán cercanos son los valores previstos y reales.
12345desde sklearn.metrics importar mean_absolute_errorprint(np.sqrt(mean_squared_error(df.Weight, df.predict)))3.147293209323613
Error R-cuadrado
Este error significa cuán cerca o cuán bien el modelo se ajusta a los datos de entrenamiento. Su valor oscila entre 0 y 1. Un valor más cercano a 1 indica un modelo preciso.
12345de sklearn.metrics import r2_scoreprint(r2_score(df.Weight, df.predict))0.9624238285897556