Понятно, что вы пытаетесь построить модель линейной регрессии для прогнозирования цен на бриллианты, но полученные результаты, как вы говорите, не очень хорошие. Давайте разберемся с проблемами.
Проблема с данными:
Проверьте, правильно ли загружены данные. Возможно, в df_prices содержатся не те цены, что ожидаются, или данные имеют пропуски.
Проверьте на наличие пропущенных значений в x с помощью df.isnull().sum().
Убедитесь, что в df_prices индексы совпадают с df.
Масштабирование данных:
Возможно, ваши признаки имеют разные масштабы. Попробуйте стандартизировать или нормализовать данные с помощью StandardScaler или MinMaxScaler из sklearn.preprocessing.
python
Копировать код
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled =
scaler.fit _transform(X_train)
X_test_scaled = scaler.transform(X_test)
model.fit (X_train_scaled, Y_train)
Y_pred = model.predict(X_test_scaled)
Ошибка в метриках:
Вы правильно используете mean_squared_error, но RMSE — это корень из MSE. Вы можете вычислить его так:
python
Копировать код
rmse = np.sqrt(mean_squared_error(Y_test, Y_pred))
print('RMSE:', rmse)
Проверка модели:
Проверьте, как выглядит ваш набор данных. Возможно, стоит использовать другие методы оценки, например, кросс-валидацию.
Посмотрите на распределение предсказанных значений и фактических цен, возможно, они сильно различаются.
Коэффициент детерминации (R²):
R², равный 0, означает, что модель не объясняет вариацию в данных. Это может быть связано с неадекватной моделью или плохим выбором признаков. Рассмотрите возможность использования других алгоритмов (например, деревья решений, случайный лес).
Скинул бы csv файлики, но не умею(