Ошибка значения линейной регрессии: Входные данные содержат NaN, бесконечность или значение, слишком большое для dtype(‘float64’)

#python #pandas #numpy #linear-regression #sklearn-pandas

#питон #панды #тупица #линейная регрессия #склеарн-панды

Вопрос:

Я работаю над моделью линейной регрессии, и я получаю ошибку:

Ошибка значения: Входные данные содержат NaN, бесконечность или значение, слишком большое для dtype(‘float64’)

Вот мой код:

 ### List Column Data Types for df   # Convert "Paid' column to float64 by first changing NaN to 0  Training_Data['Paid'].fillna(0).astype(float)   # Convert 'Sale Price' column to float64 by first changing NaN to 0  #print(df.loc[pd.to_numeric(df['Sale Price'], errors='coerce').isnull()])  #pd.to_numeric(df['Sale Price']).astype(int)  Training_Data["Sale Price"] = Training_Data["Sale   Price"].astype(str).str.strip().replace("",0).astype(float)   # List Data Types  Training_Data.dtypes  

Который возвращает: Оплаченная цена продажи float64 float64 dtype: объект

 ### List Column Data Types for df2   # Convert "Paid' column to float64 by first changing NaN to 0  Test_Data['Paid'].fillna(0).astype(float)   # Convert 'Sale Price' column to float64 by first changing NaN to 0  #print(df.loc[pd.to_numeric(df['Sale Price'], errors='coerce').isnull()])  #pd.to_numeric(df['Sale Price']).astype(int)  Test_Data["Sale Price"] = Test_Data["Sale   Price"].astype(str).str.strip().replace("",0).astype(float)   # List Data Types  Test_Data.dtypes  

Который возвращает: Оплаченная цена продажи float64 float64 dtype: объект

 ### Declare and Drop Dependent (Measured) Variable   SourceData_train_independent = Training_Data.drop(['Sale Price'], axis = 1) #   Drop depedent variable from training dataset   SourceData_train_dependent = Training_Data['Sale Price'].copy() # New dataframe   with only Dependent variable value for training dataset   SourceData_test_independent = Test_Data.drop(['Sale Price'], axis = 1)   SourceData_test_dependent = Test_Data['Sale Price'].copy()   SourceData_train_independent.dtypes  

Который возвращает: Оплаченный тип dtype float64: объект

 ### Scaling Independent Train and Test Variable   sc_X = StandardScaler()   X_train = sc_X.fit_transform(SourceData_train_independent.values) #scale the   independent variables   y_train = SourceData_train_dependent # scaling is not required for dependent   variable   X_test = sc_X.transform(SourceData_test_independent)   y_test = SourceData_test_dependent  

Наконец, когда я бегу:

 ### Feeding Train Data   reg = LinearRegression().fit(X_train, y_train)  print("The Linear regression score on training data is ",   round(reg.score(X_train, y_train),2))  

Я понял ошибку. Поэтому я думаю, что в моем файле все еще есть значения NaN, которые, как я думал, я исправил. Кто-нибудь может помочь? Спасибо!

Комментарии:

1. вам нужно сохранить результаты fillna обратно в фрейм данных Test_Data Test_Data['Paid'] = Test_Data['Paid'].fillna(0).astype(float)

2. вы также можете разместить проверки по всему коду, например print(Test_Data['Paid'].isnull().any()) , проверять по ходу, чтобы убедиться, что вы удалили нули

3. Я все еще получаю ошибку даже после корректировки этой строки во втором блоке кода

4. дважды проверьте это x_train и y_train не получите нулей? что-то вроде np.isnan ?

5. что-то не так в вашем обращении. Я не понимаю, зачем вам нужно использовать .strip() какой-то метод. проще, если вы укажете свой фрейм данных в вопросе