Я пытаюсь передать некоторые данные в sklearn, но я получаю только ошибку "содержит NaN / inf или неправильный dtype".
Данные, которые я получил, в основном представляют собой данные о погоде, которые я получил из csv-файлов и объединил в pandas.
Я проверил значения NaN и inf-значений и неправильные типы данных.
np.isfinite(X_train).all()
True
np.any(np.isnan(X_train))
False
X_train.dtype
dtype('float64')
Я также пытался использовать только некоторые столбцы и строки, чтобы сузить его, но даже с любыми двумя столбцами и некоторыми строками я получаю ту же ошибку.
Я преобразовал кадр данных pandas вперед тем, как передать его sklearn, я попытался переиндексировать его. Я записал его в csv-файл и проверил на наличие странных записей. Все решения, которые я смог найти, мне не помогли.
Код, который я пытаюсь использовать, таков:
X = climate.drop(columns=['e_bins'])
y = climate.e_bins
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33)
scaler = preprocessing.StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
accuracy_score(y_test, y_pred)
Я работаю над этой проблемой некоторое время,с успехомЛюбая помощь или идеи приветствуются! Спасибо!
Это вся ошибка, которую я получаю:
ValueError Traceback (most recent call last)
<ipython-input-197-14fc949c5576> in <module>
17 X_test = scaler.transform(X_test)
18 knn = neighbors.KNeighborsClassifier(n_neighbors=5)
---> 19 knn.fit(X_train, y_train)
20 #y_pred = knn.predict(X_test)
21 #accuracy_score(y_test, y_pred)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\neighbors\base.py in fit(self, X, y)
890 """
891 if not isinstance(X, (KDTree, BallTree)):
--> 892 X, y = check_X_y(X, y, "csr", multi_output=True)
893
894 if y.ndim == 1 or y.ndim == 2 and y.shape[1] == 1:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)
720 if multi_output:
721 y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,
--> 722 dtype=None)
723 else:
724 y = column_or_1d(y, warn=True)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
540 if force_all_finite:
541 _assert_all_finite(array,
--> 542 allow_nan=force_all_finite == 'allow-nan')
543
544 if ensure_min_samples > 0:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\validation.py in _assert_all_finite(X, allow_nan)
54 not allow_nan and not np.isfinite(X).all()):
55 type_err = 'infinity' if allow_nan else 'NaN, infinity'
---> 56 raise ValueError(msg_err.format(type_err, X.dtype))
57 # for object dtype data, we only check for NaNs (GH-13254)
58 elif X.dtype == np.dtype('object') and not allow_nan:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').