Почему я получаю 'ValueError: Ввод содержит NaN, бесконечность или значение, слишком большое для dtype (' float32 ')' для моего дерева решений? - PullRequest
0 голосов
/ 15 октября 2019

Я строю модели, и когда я запустил логистическую регрессию, я получил 'ValueError: Ввод содержит NaN, бесконечность или значение, слишком большое для dtype (' float64 ')'. Поэтому я обновил значения NaN, и Логистическая регрессия сработала. Однако я получаю 'ValueError: Ввод содержит NaN, бесконечность или значение, слишком большое для dtype (' float32 ')', когда я запускаю дерево решений сразу после.

This code didn't work as it wasn't updating my NAN values:
project_new['DTI'].fillna(0,inplace=True)
project_new['062017 Note BSL Balance'].fillna(0,inplace=True)
project_new['062019 BSL Bal'].fillna(0,inplace=True)
project_new['90+ Perf'].fillna(0,inplace=True)

So I tried this and it worked for Logistic Regression:
project_new[:] = np.nan_to_num(project_new)

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
project = pd.read_csv('c:/users/Brandon Thomas/Project.csv')

project_new['DTI'].fillna(0,inplace=True)
project_new['062017 Note BSL Balance'].fillna(0,inplace=True)
project_new['062019 BSL Bal'].fillna(0,inplace=True)
project_new['90+ Perf'].fillna(0,inplace=True) #This code didn't update 
anything
project_new[:] = np.nan_to_num(project_new) #This code worked

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, 
test_size=.2,random_state=0)

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import mean_squared_error, r2_score
X =project_new.drop("Bad Indicator",axis=1)   #Feature Matrix
y = project_new["Bad Indicator"]      #Target Variable

project_new.head()

logreg = LogisticRegression()
logreg.fit(X_train, y_train)

print("Test score: {:.4f}".format(logreg.score(X_test, y_test)))

from sklearn.model_selection import train_test_split
X = project_new.drop("Bad Indicator",axis=1)   #Feature Matrix
y = project_new["Bad Indicator"]      #Target Variable

from sklearn.tree import DecisionTreeClassifier
tree=DecisionTreeClassifier(max_depth= 4, random_state=0)
tree.fit(X_train, y_train)
print("Accuracy on training set: {:,.3f}".format(tree.score(X_train, 
y_train)))
print("Accuracy on test set: {:.1f}".format(tree.score(X_test, y_test)))

ValueError                                Traceback (most recent call 
last)
<ipython-input-342-1a67f25b6465> in <module>
      5 from sklearn.tree import DecisionTreeClassifier
      6 tree=DecisionTreeClassifier(max_depth= 4, random_state=0)
----> 7 tree.fit(X_train, y_train)
      8 print("Accuracy on training set: 
{:,.3f}".format(tree.score(X_train, y_train)))
      9 print("Accuracy on test set: {:.1f}".format(tree.score(X_test, 
y_test)))

~\Anaconda3\lib\site-packages\sklearn\tree\tree.py in fit(self, X, y, 
sample_weight, check_input, X_idx_sorted)
    814             sample_weight=sample_weight,
    815             check_input=check_input,
--> 816             X_idx_sorted=X_idx_sorted)
    817         return self
    818 

~\Anaconda3\lib\site-packages\sklearn\tree\tree.py in fit(self, X, y, 
sample_weight, check_input, X_idx_sorted)
    128         random_state = check_random_state(self.random_state)
    129         if check_input:
--> 130             X = check_array(X, dtype=DTYPE, accept_sparse="csc")
    131             y = check_array(y, ensure_2d=False, dtype=None)
    132             if issparse(X):

~\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:

~\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('float32').
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...