import numpy as np
import pandas as pd
sklearn.preprocessing
sklearn.linear_model
, sklearn.svm
, sklearn.ensemble
, y muchos más.sklearn.model_selection
y sklearn.metrics
X = pd.read_csv('../vol/intermediate_results/X.csv')
y = X['worldwide_gross']
X = X.drop('worldwide_gross',axis=1)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.4,random_state=1)
print(len(X))
print(len(X_train))
print(len(X_test))
X.head(1)
from sklearn.linear_model import Lasso
model = Lasso()
model.fit(X_train,y_train)
predicted = model.predict(X_test)
predicted.shape
import matplotlib.pyplot as plt
%matplotlib inline
plt.hist([predicted,y_test]);
estimator.score
ya viene con una de las métricas de sklearn.metrics
, que es la métrica sklearn.metric.r2_score
model.score(X_test,y_test)
Bastante bien para un primer modelo!
Un buen score R2 es importante para una regresión. Pero no lo es todo. De forma general los scores hay que complementarlos con visualizaciones de los datos ya que una métrica no logra siempre encodear todas las caracteristicas de una distribución de probabilidades. Un ejemplo es el siguiente:
residuals = y_test - predicted
plt.scatter(y_test,residuals)
ap_residuals = np.abs(residuals) / y_test
plt.scatter(y_test,ap_residuals)
lap_residuals = np.log(ap_residuals)
plt.scatter(y_test,lap_residuals)
plt.hist(lap_residuals,bins=100, normed=1, histtype='step', cumulative=True);
plt.hist(lap_residuals, bins=100, normed=1, histtype='step',cumulative=True);
plt.axis([-2,0,0,1])
np.power(np.exp(1)*np.ones(5),np.linspace(-2,0,5))
plt.scatter(np.arange(8),model.coef_)
X = pd.read_csv('../vol/intermediate_results/X.csv')
X = X.drop('gross',axis=1)
X = X.drop('worldwide_gross',axis=1)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.4)
model = Lasso()
model.fit(X_train,y_train)
model.score(X_test,y_test)
X.columns
for el in zip(list(X.columns),list(model.coef_)):
print(el)