Bonjour à tous Je pratiquais la régression linéaire sur un jeu de données provenant de kaggle ( https://www.kaggle.com/sohier/calcofi , bouteille.csv), et j'essaie de l'implémenter de la manière suivante :
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
df = pd.read_csv("bottle.csv")
df
df1 = df.loc[:,"T_degC":"Salnty"]
df1 = df1.dropna()
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LinearRegression
X = df1["T_degC"]
y = df1["Salnty"]
X = X.values
type(X)
y = y.values
type(y)
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.4)
lm = LinearRegression()
X_train = X_train.reshape(-1,1)
X_test = X_test.reshape(-1,1)
y_train = y_train.reshape(-1,1)
lm.fit(X_train, y_train)
Le problème survient lorsque je regarde les intercepts et le coefficient, qui sont :
lm.intercept_
lm.coef_
qui s'avèrent être 34,4 et -0,05 respectivement. Mais considérez ensuite le nuage de points des variables X et y :
plt.scatter(X_train, y_train)
Il ne semble pas qu'une ligne à pente négative puisse être la ligne de régression de cette distribution. Je me demande donc ce que j'ai pu faire de mal pour arriver à ce résultat.