


Регрессия, пайтон, прошу помощь
import pandas as pd
import numpy as np
df = pd.read_csv("/kaggle/input/linear-regression-academic-mehmat/diamonds_test.csv")
df_prices = pd.read_csv('/kaggle/input/linear-regression-academic-mehmat/sample_submission.csv')
x = df[['carat','depth','table','x','y','z']]
y = df_prices['price']
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(x,y,
test_size=0.3,
random_state=42)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, Y_train)
Y_pred = model.predict(X_test)
print(Y_pred[:10])
from sklearn.metrics import mean_squared_error
print('RMSE', mean_squared_error(Y_test, Y_pred))
from sklearn.metrics import r2_score
print('R2', np.round(r2_score(Y_test, Y_pred)))
Кто разбирается сразу понял, что пытаюсь обучить машину прогнозировать цену бриллиантов. Что-то да выдает и прогнозирует, но когда пытался найти среднеквадратичное отклонение и коэффициент детерминации, то выдает уж слишком грустные значения: 1136193 и 0. Такое ощущение, будто бы она ошибается. И ещё, обычно я писал root_mean_squared_error, но в Kaggle такая запись выдает ошибку.
Скинул бы csv файлики, но не умею(
Понятно, что вы пытаетесь построить модель линейной регрессии для прогнозирования цен на бриллианты, но полученные результаты, как вы говорите, не очень хорошие. Давайте разберемся с проблемами.
Проблема с данными:
Проверьте, правильно ли загружены данные. Возможно, в 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, означает, что модель не объясняет вариацию в данных. Это может быть связано с неадекватной моделью или плохим выбором признаков. Рассмотрите возможность использования других алгоритмов (например, деревья решений, случайный лес).