-1

j'ai écrit un script simple qui génère et régressant données d'un échantillon aléatoire:Comment puis-je m'assurer que j'obtiens les bons résultats de ce générateur de régression?

import matplotlib.pyplot as plt 
import numpy as np 
import random 
import sklearn.datasets 
import sklearn.linear_model as lm 
########################################## 
n = np.random.randint(1,10) 
b = np.random.randint(50,200) 
X1_, Y1_ = sklearn.datasets.make_regression(n_samples=100, n_features=1, noise=n, bias=b) 
X1 = X1_.reshape(len(X1_), 1) 
Y1 = Y1_.reshape(len(Y1_), 1) 
########################################## 
x = np.array(X1) 
y = np.array(Y1) 
########################################## 
lr = lm.LinearRegression() 
lr.fit(x, y) 
td = np.arange(1, 101, 1).reshape(100, 1) 
n_y = lr.predict(td) 
########################################## 
f, ax = plt.subplots(1, 2, sharey=True) 
ax[0].scatter(x, y) 
ax[0].set_xlim([-4, 4]) 
ax[0].set_title("x, y") 
ax[1].plot(x, n_y, 'g') 
ax[1].set_xlim([-4, 4]) 
ax[1].set_title("x_tr, y_lr") 
f.suptitle("Regression") 
plt.ylim(y.min()-1, y.max()+1) 
########################################## 
print ("Array: {}\nType: {}\nShape: {}\nLength: {}\nData: {}\n".format("X1", type(X1), str(np.shape(X1)), len(X1), str(X1))) 
print ("Array: {}\nType: {}\nShape: {}\nLength: {}\nData: {}\n".format("Y1", type(Y1), str(np.shape(Y1)), len(Y1), str(Y1))) 
print ("Array: {}\nType: {}\nShape: {}\nLength: {}\nData: {}\n".format("x", type(x), str(np.shape(x)), len(x), str(x))) 
print ("Array: {}\nType: {}\nShape: {}\nLength: {}\nData: {}\n".format("y", type(y), str(np.shape(y)), len(y), str(y))) 
print ("Array: {}\nType: {}\nShape: {}\nLength: {}\nData: {}\n".format("td", type(td), str(np.shape(td)), len(td), str(td))) 
print ("Array: {}\nType: {}\nShape: {}\nLength: {}\nData: {}\n".format("n_y", type(n_y), str(np.shape(n_y)), len(n_y), str(n_y))) 
########################################## 
plt.show() 

et alors qu'il semble fonctionner très bien, sans erreur, je suis toujours préoccupé par la précision: les lignes de régression sont toujours pleins d'angles aléatoires, et curieusement en forme. Comment puis-je tester cela? Y a-t-il des fonctions de rapport d'erreurs dont je devrais être conscient?

Répondre

0

Ce que vous avez observé est parce que vos données sont aléatoires. La régression récupère essentiellement la distribution qui a généré les données, il est donc ironique que vous essayiez de récupérer la distribution du générateur aléatoire, qui essaye essentiellement de cacher sa distribution.

Si vous souhaitez tester des méthodes de régression, vous devez utiliser certains jeux de données ML populaires disponibles sur Internet. Par exemple: collection de jeux de données UCI ML (filtre pour tâche de régression):

+0

Quels sont de bons exemples? –