Классификация KNN Значение NaNPython

Программы на Python
Anonymous
Классификация KNN Значение NaN

Сообщение Anonymous »


Я получаю сообщение об ошибке: X содержит NaN. Я не увидел никаких значений NaN в наборе данных. Имейте в виду, что перед этим написано несколько строк кода.

Если вы хотите увидеть полный код: https://drive.google.com/file/d/1t-PP5t ... sp=sharing

Набор данных, который я использую: https://drive.google.com/file/d/1wTxG5y ... sp=sharing

Текущий код, который я использую:

# определение модели из sklearn.neighbours импортировать KNeighboursClassifier k_range = np.arange(1100) точность = [] для n в k_range: neigh = KNeighborsClassifier(n_neighbors=n, n_jobs=-1) neigh.fit(X_train_2, y_train_2) # предсказываем результат y_pred = neigh.predict(X_test_2) #print («Случайный результат лесного классификатора») #print ("Производительность - " + str(100*accuracy_score(y_pred, y_test_2)) + "%") точность.append(100*accuracy_score(y_pred, y_test_2)) Вывод ошибки, который я получаю:

ValueError Traceback (последний вызов последним) в () 11 12 # предсказать результат ---> 13 y_pred = neigh.predict(X_test_2) 14 #print («Случайный результат лесного классификатора») 15 #print ("Производительность - " + str(100*accuracy_score(y_pred, y_test_2)) + "%") ValueError: вход X содержит NaN. KNeighborsClassifier не принимает пропущенные значения, закодированные как NaN. Для контролируемого обучения вы можете рассмотреть sklearn.ensemble.HistGradientBoostingClassifier и Regressor, которые принимают пропущенные значения, изначально закодированные как NaN. В качестве альтернативы можно предварительно обработать данные, например, используя преобразователь в конвейере или отбросив выборки с пропущенными значениями. Я пытался использовать sklearn Imputer, чтобы избавиться от NaN, но затем выдал ту же ошибку для y_pred.
из sklearn.impute import SimpleImputer # Инициализируем процессор imputer = SimpleImputer(strategy='mean') # Вы также можете использовать другие стратегии # Подгонять и трансформировать X_train_2 X_train_imputed = imputer.fit_transform(X_train_2) # Преобразуем X_test_2, используя тот же процессор X_test_imputed = imputer.transform(X_test_2) # Затем продолжите подгонку и прогнозирование RandomForestClassifier с использованием вмененных данных clf.fit(X_train_imputed, y_train_2) y_pred = clf.predict(X_test_imputed)```

Вернуться в «Python»