Проект прогнозирования цен на жилье оказался «Здравствуйте, мир» в мире машинного обучения. Это очень простой проект, который просто использует линейную регрессию для прогнозирования цен на жилье. Это будет очень короткий блог, так что без дальнейших рассуждений.
Полную статью с исходным кодом читайте здесь —https://machinelearningprojects.net/house-price-prediction/
Давай сделаем это…
Шаг 1 — Импорт необходимых библиотек.
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import r2_score %matplotlib inline
Шаг 2 — Чтение наших входных данных для прогнозирования цен на жилье.
customers = pd.read_csv('USA_Housing.csv') customers.head()
Шаг 3 — Описание наших данных.
customers.describe()
Шаг 4 — Анализ информации из наших данных.
customers.info()
Шаг 5 — Графики для визуализации данных прогнозирования цен на жилье.
sns.pairplot(customers)
- Мы используем sns.pairplot(data) для построения всех возможных комбинаций числовых столбцов в наборе данных.
- Из приведенных ниже графиков мы можем сделать вывод, что цена сильно коррелирует со средним доходом по региону.
Шаг 6 — Масштабирование наших данных.
scaler = StandardScaler() X=customers.drop(['Price','Address'],axis=1) y=customers['Price'] cols = X.columns X = scaler.fit_transform(X)
- Нам нужно масштабировать наши данные, чтобы привести все к одному масштабу или в пределах одного диапазона.
- Здесь мы используем StandardScaler для масштабирования наших данных.
- Просто посмотрите на первое изображение входных данных и посмотрите, как разные столбцы относятся к разным шкалам.
Шаг 7 — Разделение наших данных для обучения и тестирования.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=101)
- Использование train_test_split() для разделения наших данных в пропорции 70%-30%.
Шаг 8 — Обучение нашей модели линейной регрессии для прогнозирования цен на жилье.
lr = LinearRegression() lr.fit(X_train,y_train) pred = lr.predict(X_test) r2_score(y_test,pred)
- Мы используем r2_score здесь для измерения производительности нашей регрессионной модели.
- Наша модель дает 0,91 r2_score из 1, что является очень приличной оценкой.
- Я также пытался использовать регрессии Лассо и Риджа, но они также работали почти так же, как линейная регрессия.
Шаг 9 — Давайте визуализируем наши прогнозы прогнозирования цен на жилье.
sns.scatterplot(x=y_test, y=pred)
- Это должна быть прямая линия для 100% точной модели.
- Но мы также получаем такой тренд, как прямая линия, что тоже неплохо.
Шаг 10 — Построение остатков нашей модели прогнозирования цен на жилье.
sns.histplot((y_test-pred),bins=50,kde=True)
- Здесь мы строим гистограмму остатков.
- Остаток — это ошибка в регрессии, или мы можем сказать разницу между реальным значением и нашим прогнозируемым значением.
- Как мы видим, большинство остатков около 0, что означает, что наши прогнозы почти близки к реальным значениям, следовательно, это очень хорошая модель.
Шаг 11 — Наблюдение за коэффициентами.
cdf=pd.DataFrame(lr.coef_, cols, [‘coefficients’]).sort_values(‘coefficients’,ascending=False) cdf
- Это коэффициенты, рассчитанные при линейной регрессии.
- Интуиция подсказывает, что увеличение Avg. Доход от площади приведет к увеличению цены дома на 230377,522 долл. США при условии, что все остальные факторы остаются неизменными.
Чтобы узнать больше о машинном обучении, глубоком обучении, компьютерном зрении, НЛП и проектах Flask, посетите мой блог.
Для дальнейшего объяснения кода и исходного кода посетите здесь —
Итак, это все для этого блога, ребята, спасибо за то, что прочитали его, и я надеюсь, что вы возьмете что-то с собой после прочтения этого и до следующего раза 👋…