@@ -325,30 +325,29 @@ def fit(self, X, y):
325325 scores = np .zeros (X .shape [1 ])
326326
327327 # Cross-validation
328- n = 0
328+ for n , (train , test ) in enumerate (cv ):
329+ X_train , X_test = X [train ], X [test ]
330+ y_train , y_test = y [train ], y [test ]
329331
330- for train , test in cv :
331332 # Compute a full ranking of the features
332- ranking_ = rfe .fit (X [ train ], y [ train ] ).ranking_
333+ ranking_ = rfe .fit (X_train , y_train ).ranking_
333334 # Score each subset of features
334335 for k in range (0 , max (ranking_ )):
335336 mask = np .where (ranking_ <= k + 1 )[0 ]
336337 estimator = clone (self .estimator )
337- estimator .fit (X [ train ][ :, mask ], y [ train ] )
338+ estimator .fit (X_train [ :, mask ], y_train )
338339
339340 if self .loss_func is None :
340- loss_k = 1.0 - estimator .score (X [ test ][ :, mask ], y [ test ] )
341+ loss_k = 1.0 - estimator .score (X_test [ :, mask ], y_test )
341342 else :
342343 loss_k = self .loss_func (
343- y [ test ] , estimator .predict (X [ test ] [:, mask ]))
344+ y_test , estimator .predict (X_test [:, mask ]))
344345
345346 if self .verbose > 0 :
346347 print ("Finished fold with %d / %d feature ranks, loss=%f"
347348 % (k , max (ranking_ ), loss_k ))
348349 scores [k ] += loss_k
349350
350- n += 1
351-
352351 # Pick the best number of features on average
353352 best_score = np .inf
354353 best_k = None
0 commit comments