2017-04-05 3 views
2

Vous ne savez pas comment résoudre ce problème. Toute aide apprécie beaucoup. J'ai vu thi Vectorization: Not a valid collection mais pas sûr si je compris ceLe tableau de singles Singleton (<train de fonction à 0x7f3a311320d0>, dtype = object) ne peut pas être considéré comme une collection valide

train = df1.iloc[:,[4,6]] 
      target =df1.iloc[:,[0]] 

      def train(classifier, X, y): 
       X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33) 

       classifier.fit(X_train, y_train) 
       print ("Accuracy: %s" % classifier.score(X_test, y_test)) 
       return classifier 

     trial1 = Pipeline([ 
      ('vectorizer', TfidfVectorizer()), 
      ('classifier', MultinomialNB()), 
     ]) 

     train(trial1, train, target) 
erreur

ci-dessous:

----> 6 train(trial1, train, target) 

    <ipython-input-140-ac0e8d32795e> in train(classifier, X, y) 
      1 def train(classifier, X, y): 
    ----> 2  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33) 
      3 
      4  classifier.fit(X_train, y_train) 
      5  print ("Accuracy: %s" % classifier.score(X_test, y_test)) 

    /home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_split.py in train_test_split(*arrays, **options) 
     1687   test_size = 0.25 
     1688 
    -> 1689  arrays = indexable(*arrays) 
     1690 
     1691  if stratify is not None: 

    /home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in indexable(*iterables) 
     204   else: 
     205    result.append(np.array(X)) 
    --> 206  check_consistent_length(*result) 
     207  return result 
     208 

    /home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in check_consistent_length(*arrays) 
     175  """ 
     176 
    --> 177  lengths = [_num_samples(X) for X in arrays if X is not None] 
     178  uniques = np.unique(lengths) 
     179  if len(uniques) > 1: 

    /home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in <listcomp>(.0) 
     175  """ 
     176 
    --> 177  lengths = [_num_samples(X) for X in arrays if X is not None] 
     178  uniques = np.unique(lengths) 
     179  if len(uniques) > 1: 

    /home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in _num_samples(x) 
     124   if len(x.shape) == 0: 
     125    raise TypeError("Singleton array %r cannot be considered" 
    --> 126        " a valid collection." % x) 
     127   return x.shape[0] 
     128  else: 

    TypeError: Singleton array array(<function train at 0x7f3a311320d0>, dtype=object) cannot be considered a valid collection. 

____ 

Je ne sais pas comment résoudre. Toute aide apprécie beaucoup. J'ai vu thi Vectorization: Not a valid collection mais je ne sais pas si j'ai compris

Répondre

3

Cette erreur se produit parce que votre fonction train masque votre variable train, et par conséquent il est passé à lui-même.

Explication:

Vous définissez un train de variable comme ceci:

train = df1.iloc[:,[4,6]] 

Puis, après quelques lignes, vous définissez un train de méthode comme ceci:

def train(classifier, X, y): 

Alors, que fait arrive, votre version précédente de train est mise à jour avec la nouvelle version. Cela signifie que le train ne pointe plus vers l'objet Dataframe comme vous le souhaitez, mais pointe vers la fonction que vous avez définie. Dans l'erreur, il est effacé.

array(<function train at 0x7f3a311320d0>, dtype=object) 

Voir le train de la fonction dans l'instruction d'erreur.

Solution:

renommer l'une d'entre elles (la variable ou de la méthode). Suggestion: Renommez la fonction en un autre nom, par exemple training ou training_func ou quelque chose comme ça.