Ранее я научился загружать CSV-файл с помощью библиотеки Pandas, а также очищал его, удаляя пропущенные значения. Следующий шаг — выбрать целевое значение и функции, которые будут использоваться в моей модели. В этом примере я буду использовать цены на жилье в Мельбурне в качестве набора данных для прогнозирования цен на жилье в Мельбурне.

Шаг 1: Загрузка и очистка данных

Это было объяснено и сделано в предыдущем посте. Вы можете найти это здесь"!

# Import Pandas library 
import pandas as pd
# Save filepath to variable for easier access
melbourne_file_path = 'melb_data.csv'
# Read the data and store data in DataFrame titled melbourne_data
melbourne_data = pd.read_csv(melbourne_file_path) 
# Use dropna drops missing values (think of na as "not available")
melbourne_data = melbourne_data.dropna(axis=0)

Шаг 2. Изучите переменные/столбцы в наборе данных.

Для этого вы можете использовать метод столбцов из Pandas, чтобы получить имя столбца.

melbourne_data.columns

Поскольку целью моей модели является прогнозирование цен на жилье в Мельбурне, ясно, что целью моего прогноза (или значением y) должна быть Цена. Мы можем сделать это, используя точечную нотацию.

y = melbourne_data.Price

Выбор цели прогнозирования очень прост и удобен. Более сложная часть — это определение функций, которые нужно использовать. Это требует некоторой интуиции для выбора объектов, и в качестве отправной точки кажется, что "Комнаты", "Ванная", "Площадка", "Широта" и "Долгота"составляют хороший набор объектов для начать с. Как правило, вы думаете, что больше комнат и ванных комнат будет означать более высокую цену. То же самое касается размера земли, где вы будете платить больше за больший участок земли. Широта и долгота также повлияют на цены на жилье, поскольку некоторые районы могут пользоваться повышенным спросом, что приведет к росту цен на жилье. Имея это в виду, мы приступаем к выбору столбцов для наших функций (также известных как значения X).

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]

После выбора функций используйте head() для проверки ваших данных, прежде чем продолжить.

Теперь все выглядит хорошо, и мы готовы перейти к следующему шагу.

Шаг 3: Разделение данных на набор для обучения и проверки

Как и в случае с любыми проблемами машинного обучения, нам всегда придется разбивать наши данные на обучающий и проверочный наборы. Учебный набор используется для обучения нашей модели, тогда как проверочный набор используется для тестирования нашей модели. Для этого мы используем библиотеку scikit-learn train_test-split.

  1. Импортируйте train_test_split из sklearn.model_selection
from sklearn.model_selection import train_test_split

2. Разделите данные на данные обучения и проверки как для функций, так и для цели. Чтобы убедиться, что мы всегда получаем одно и то же разделение при каждом запуске, мы можем указать числовое значение в аргументе random_state .

train_X, val_X, train_y, val_y = train_test_split(X, y, random_state = 0)

Шаг 4: Определение модели

Для начала мы будем использовать простое дерево решений в качестве модели для прогнозирования цен на жилье. Для этого нам сначала нужно импортировать его, а затем определить. Опять же, random_state настроено так, чтобы при каждом запуске кода мы получали одни и те же результаты.

from sklearn.tree import DecisionTreeRegressor
# Define the model
melbourne_model = DecisionTreeRegressor(random_state=1)

Далее мы будем обучать модель, используя данные обучения, которые мы получили ранее. Это также известно как подгонка модели

# Fit model with train_X and train_y
melbourne_model.fit(train_X, train_y)

Поздравляем, теперь у нас есть обученная модель!

Шаг 5: Прогнозирование с помощью обученной модели

Теперь с обученной моделью мы можем начать прогнозировать. Мы будем использовать проверочный набор для проверки производительности нашей модели.

# Get predicted prices on validation data
val_predictions = melbourne_model.predict(val_X)

Итак, как мы можем измерить производительность нашей модели? Простым показателем для использования является средняя абсолютная ошибка (MAE).

from sklearn.metrics import mean_absolute_error
# Get the MAE for our model
mean_absolute_error(val_y, val_predictions)

Полученное значение равно 207190.6873773146. Это означает, что в среднем наши прогнозы на 207 190 отличаются от фактического значения.

Благодаря этому мы успешно определили, обучили и использовали модель машинного обучения для прогнозирования цен на жилье. Это была очень упрощенная версия машинного обучения, и на самом деле она намного сложнее, чем эти 5 шагов. В будущем я буду глубже изучать более сложные модели, и я надеюсь, что вы останетесь со мной в этом путешествии!

Спасибо ~!