0

My Code

from sklearn.naive_bayes import MultinomialNB
from sklearn.linear_model import SGDClassifier

mnb=MultinomialNB()
svm=SGDClassifier(max_iter=1000, tol=0.2)

mnb_bow_predictions=train_predict_evaluate_model(classifier=mnb,
                                                train_features=bow_train_features,
                                                train_labels=train_labels,
                                                test_features=bow_test_features,
                                                test_labels=test_labels)

and raise the error

~\Anaconda3\lib\site-packages\sklearn\utils\validation.py in _assert_all_finite(X, allow_nan)
     58     elif X.dtype == np.dtype('object') and not allow_nan:
     59         if _object_dtype_isnan(X).any():
---> 60             raise ValueError("Input contains NaN")
     61 
     62 

ValueError: Input contains NaN\

whats make my program raise this error? error in dataset or in function?

  • there should be **no** `null` values in your dataset as shown in the line with error `if _object_dtype_isnan(X).any(): raise ValueError("Input contains NaN")` – rock321987 Dec 02 '19 at 05:25
  • As it seem, it is the error in the dataset – Debdut Goswami Dec 02 '19 at 05:47
  • Does this answer your question? [sklearn error ValueError: Input contains NaN, infinity or a value too large for dtype('float64')](https://stackoverflow.com/questions/31323499/sklearn-error-valueerror-input-contains-nan-infinity-or-a-value-too-large-for) – PV8 Dec 02 '19 at 06:50

1 Answers1

0

All feature and label values must be finite. If bow_train_features, train_labels, bow_train_features, train_labels are DataFrames or Numpy arrays, you can filter for only the fully-finite observations in the train/test sets using the code below:

# Create finite observation filters for train/test sets
train_finite_filter = np.isfinite(bow_train_features) & np.isfinite(train_labels) 
test_finite_filter = np.isfinite(bow_test_features) & np.isfinite(test_labels)

# Filter for finite training observations
bow_train_features_finite = bow_train_features[train_finite_filter]
train_labels_finite = train_labels[train_finite_filter]

# Filter for finite test observations
bow_test_features_finite = bow_test_features[test_finite_filter]
test_labels_finite = test_labels[test_finite_filter]
Brandon
  • 918
  • 6
  • 14