#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()
какой-то метод. проще, если вы укажете свой фрейм данных в вопросе