Bonjour à tous,

Je débute en python et je me lance dans un programme dont le but est de faire une régression linéaire à partir d'un classeur .csv contenant 3 colonnes : 'price', 'surface', 'arrondissement'.
Malheureusement quand j'essaye de diviser mon échantillon en training et testing pour faire un apprentissage de régression linéaire, au moment de tracer la régression linéaire, j'ai une erreur :

X = X[:-Y];
File "//anaconda/lib/python3.6/site-packages/numpy/matrixlib/defmatrix.py", line 318, in __getitem__
out = N.ndarray.__getitem__(self, index)
IndexError: failed to coerce slice entry of type matrix to integer


Voici mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
 
from sklearn.neighbors import KNeighborsClassifier;
import numpy as np;
import pandas as pd;
import matplotlib.pyplot as plt;
from sklearn.linear_model import LinearRegression;
from sklearn.cross_validation import train_test_split
 
bob = pd.read_csv('house_data.csv');
 
 
#on nettoie les données pour pouvoir fiter à une droite avec moins d'erreur 
 
 
house_data = bob[bob['price'] < 8000];
 
 
# ici on va commencer par regarder l'évolution du prix en fonction de la surface
#peu importe l' arrondissement
 
plt.title('prix en fonction de la surface');
plt.plot(house_data['surface'], house_data['price'], 'x');
 
#on crée les matrices et on retire les valeurs manquantes dans chacune d'entre elles.
 
X = np.matrix(house_data['surface']);
X = X[~np.isnan(X)];            
Y = np.matrix(house_data['price']);
Y = Y[~np.isnan(Y)];
X = X[:-Y];
x = X.T;
print(X);
print('ma matrice X est :', X , ' ma matrice y est ', Y);
print(np.isnan(X).any());
print(np.isnan(Y).any());
 
print(house_data['surface']);
print(house_data['price']);
print(house_data['arrondissement']);
 
 
 
 
 
#sample = np.random.randint(house_data['surface'].shape[0], size= (200,3));
#sampled_data = house_data[sample];
 
xtrain, xtest, ytrain, ytest = train_test_split(X, Y, train_size=0.8);
model = linear_model.LinearRegression();
model.fit(xtrain, ytrain);
accuracy = model.score(xtest, ytest);
print(accuracy);
 
plt.ylabel('price (€)');
plt.xlabel('surface (m2)'); 
plt.show();

Pourriez-vous me sortir de la galère? Merci d'avance!

Florian