Алгоритмы машинного обучения: базовый курс - страница 19
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error
```
Теперь создадим небольшой набор данных с информацией о квартирах:
```python
# Создадим искусственные данные: площадь (кв. метры), этаж и цена (в миллионах рублей)
data = pd.DataFrame({
"Площадь": [30, 45, 60, 75, 90, 105, 120, 135, 150, 165],
"Этаж": [2, 3, 5, 1, 8, 10, 12, 15, 17, 20],
"Цена": [3.5, 5.2, 6.8, 7.1, 9.3, 10.5, 12.7, 14.2, 15.8, 17.5]
})
```
Этот набор данных содержит три столбца:
– Площадь – площадь квартиры в квадратных метрах
– Этаж – на каком этаже расположена квартира
– Цена – реальная стоимость квартиры в миллионах рублей (целевой признак)
Шаг 2: Разделение данных на обучающую и тестовую выборки
Мы разделим данные на обучающую выборку (80%) и тестовую выборку (20%). Это необходимо для проверки модели на новых данных, которые она не видела во время обучения.
```python
# Отделяем признаки (X) и целевую переменную (y)
X = data[["Площадь", "Этаж"]]
y = data["Цена"]
# Разделяем данные: 80% для обучения, 20% для тестирования
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Выведем размер обучающей и тестовой выборки
print("Размер обучающей выборки:", X_train.shape[0])
print("Размер тестовой выборки:", X_test.shape[0])
```
Почему это важно?
– Обучающая выборка используется для того, чтобы модель нашла закономерности в данных.
– Тестовая выборка нужна, чтобы проверить, насколько хорошо модель предсказывает значения на новых данных.
Шаг 3: Обучение модели линейной регрессии
Теперь создадим модель линейной регрессии и обучим её на наших данных.
```python
# Создаем объект модели линейной регрессии
model = LinearRegression()
# Обучаем модель на обучающих данных
model.fit(X_train, y_train)
```
Что здесь происходит?
– `LinearRegression()` – создаёт объект модели линейной регрессии.
– `.fit(X_train, y_train)` – обучает модель, находя оптимальные коэффициенты (вес признаков), которые позволяют наилучшим образом предсказывать цену квартиры.
Шаг 4: Анализ коэффициентов модели
После обучения можно посмотреть, какие коэффициенты модель подобрала для признаков.
```python
# Вывод коэффициентов
print("Коэффициенты модели:", model.coef_)
print("Свободный член (intercept):", model.intercept_)
```
Что это означает?
– Коэффициенты (`coef_`) показывают, как изменится предсказание цены, если изменить один из признаков на единицу.
– Свободный член (`intercept_`) – это базовое значение, с которого начинается предсказание, когда все признаки равны нулю.
Шаг 5: Предсказание на новых данных
Теперь, когда модель обучена, мы можем использовать её для предсказания цен квартир.
```python
# Делаем предсказания на тестовых данных
y_pred = model.predict(X_test)
# Выводим предсказанные и реальные значения
print("Реальные цены:", y_test.values)
print("Предсказанные цены:", y_pred)
```
Здесь модель делает прогноз стоимости квартир, основываясь на их площади и этаже.
Шаг 6: Оценка качества модели
Чтобы понять, насколько хорошо модель работает, сравним её предсказания с реальными значениями.
```python
# Вычисляем среднюю абсолютную ошибку (MAE)
mae = mean_absolute_error(y_test, y_pred)
# Вычисляем среднеквадратичную ошибку (MSE)
mse = mean_squared_error(y_test, y_pred)
# Выводим ошибки
print(f"Средняя абсолютная ошибка (MAE): {mae:.2f} млн рублей")