2017-10-17 3 views
0

Je suis en train de reproduire un tutoriel vu here. Tout fonctionne parfaitement jusqu'à ce que j'ajoute les méthodes .fit à mon jeu d'apprentissage.problèmes avec l'apprentissage de la machine scikit apprendre en python

Voici un échantillon de mon code:

# TRAINING PART 

train_dir = 'pdf/learning_set' 
dictionary = make_dic(train_dir) 

train_labels = np.zeros(20) 
train_labels[17:20] = 1 
train_matrix = extract_features(train_dir) 
model1 = MultinomialNB() 
model1.fit(train_matrix, train_labels) 


# TESTING PART 

test_dir = 'pdf/testing_set' 
test_matrix = extract_features(test_dir) 
test_labels = np.zeros(8) 
test_labels[4:7] = 1 
result1 = model1.predict(test_matrix) 
print(confusion_matrix(test_labels, result1)) 

Voici mon Traceback:

Traceback (most recent call last): 
File "ML.py", line 65, in <module> 
model1.fit(train_matrix, train_labels) 
File "/usr/local/lib/python3.6/site-packages/sklearn/naive_bayes.py", 
line 579, in fit 
X, y = check_X_y(X, y, 'csr') 
File "/usr/local/lib/python3.6/site- 
packages/sklearn/utils/validation.py", line 552, in check_X_y 
check_consistent_length(X, y) 
File "/usr/local/lib/python3.6/site- 
packages/sklearn/utils/validation.py", line 173, in 
check_consistent_length 
" samples: %r" % [int(l) for l in lengths]) 
ValueError: Found input variables with inconsistent numbers of 
samples: [23, 20] 

Je voudrais savoir comment puis-je résoudre ce problème? Je travaille sur Ubuntu 16.04, avec python 3.6.

Répondre

1

ValueError: variables d'entrée avec ce nombre inconsistantes de échantillons: [23, 20]

Cela signifie que vous avez 23 vecteurs de formation (train_matrix a 23 lignes) mais seulement 20 étiquettes de formation (train_labels est un tableau de 20 valeurs)

changement train_labels = np.zeros(20) à train_labels = np.zeros(23) et cela devrait fonctionner.

+0

Merci beaucoup, ça marche parfaitement! c'était une erreur stupide aha –