При попытке вычислить среднеквадратичную ошибку журнала я получаю следующую ошибку:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Расчет среднеквадратичной ошибки не дает ошибки.Для воспроизведения проблемы можно использовать следующий код:
from sklearn.datasets import load_boston
dataset = load_boston()
import pandas as pd
df = pd.DataFrame(dataset.data, columns=dataset.feature_names, )
df["MEDV"] = dataset.target
#tried this, no difference
df = df.reset_index()
df.isnull().sum()
#No missing values
df.dtypes
# all float64
cols = ["LSTAT", "RM"]
X = df[cols]#.astype(np.float)
y = df["MEDV"]#.astype(np.float)
from sklearn.linear_model import LinearRegression
slr = LinearRegression()
slr.fit(X, y)
y_pred = slr.predict(X)
np.all(np.isfinite(X))
# true
np.all(np.isfinite(y))
#true
np.all(np.isfinite(y_pred))
#true
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y, y_pred)
print(mse)
from sklearn.metrics import mean_squared_log_error
# THIS produces the error message:
msle = mean_squared_log_error(y, y_pred)
print(msle)
Я сделал несколько проверок:
- без пропущенных значений
- без бесконечных значений
- Типы данных: float64
Я не понимаю, почему это дает мне ошибку.Кто-нибудь знает, что я делаю не так?
С уважением,
Jaap