[Python] sklearn raises error "Input X contains NaN" despite np.where(np.isnan(X)) returning...

Discussão em 'Python' iniciado por Stack, Setembro 25, 2024.

  1. Stack

    Stack Membro Participativo

    I am trying to make a simple Knearestneighbor algorithm for the famous Titanic data set. I keep receiving the error in the title despite the fact that it does not seem that my data frame has any NaN values. How to resolve this?

    y = train_data["Survived"]
    features = ["Fare", "Sex"]

    X = train_data[features]
    X.loc[:, 'Sex'] = X.loc[:, 'Sex'].apply(weigh_sex)
    X = ct.fit_transform(X)


    X_test = test_data[features]
    X_test.loc[:, "Sex"] = X_test.loc[:, "Sex"].apply(weigh_sex)
    X_test = ct.fit_transform(X_test)

    print(np.where(np.isnan(X))) #returns nothing, even when put after clf.fit()

    clf.fit(X, y)

    predictions = clf.predict(X_test) #this line raises the error


    full traceback:

    Traceback (most recent call last):
    File "C:\pystuff\StatsSandbox\Titanic.py", line 65, in <module>
    predictions = clf.predict(X_test) #this line raises the error
    File "C:\pystuff\learn\StatsSandbox\lib\site-packages\sklearn\neighbors\_classification.py", line 266, in predict
    neigh_ind = self.kneighbors(X, return_distance=False)
    File "C:\pystuff\learn\StatsSandbox\lib\site-packages\sklearn\neighbors\_base.py", line 804, in kneighbors
    X = self._validate_data(X, accept_sparse="csr", reset=False, order="C")
    File "C:\pystuff\learn\StatsSandbox\lib\site-packages\sklearn\base.py", line 605, in _validate_data
    out = check_array(X, input_name="X", **check_params)
    File "C:\pystuff\learn\StatsSandbox\lib\site-packages\sklearn\utils\validation.py", line 957, in check_array
    _assert_all_finite(
    File "C:\pystuff\learn\StatsSandbox\lib\site-packages\sklearn\utils\validation.py", line 122, in _assert_all_finite
    _assert_all_finite_element_wise(
    File "C:\pystuff\learn\StatsSandbox\lib\site-packages\sklearn\utils\validation.py", line 171, in _assert_all_finite_element_wise
    raise ValueError(msg_err)
    ValueError: Input X contains NaN.

    Continue reading...

Compartilhe esta Página