«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Полный рабочий процесс машинного обучения с помощью Scikit-Learn: прогнозирование цен на жилье в Калифорнии

Полный рабочий процесс машинного обучения с помощью Scikit-Learn: прогнозирование цен на жилье в Калифорнии

Опубликовано 2 октября 2024 г.
Просматривать:802

Введение

В этой статье мы продемонстрируем полный рабочий процесс проекта машинного обучения с использованием Scikit-Learn. Мы построим модель для прогнозирования цен на жилье в Калифорнии на основе различных характеристик, таких как средний доход, возраст дома и среднее количество комнат. Этот проект проведет вас через каждый этап процесса, включая загрузку данных, исследование, обучение модели, оценку и визуализацию результатов. Независимо от того, являетесь ли вы новичком, желающим понять основы, или опытным практиком, желающим повысить свою квалификацию, эта статья предоставит ценную информацию о практическом применении методов машинного обучения.

Проект прогнозирования цен на жилье в Калифорнии

1. Введение

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

2. Импорт библиотек

В этом разделе мы импортируем необходимые библиотеки для манипулирования данными, визуализации и построения нашей модели машинного обучения.

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import fetch_california_housing

3. Загрузка набора данных

Мы загрузим набор данных о жилье в Калифорнии и создадим DataFrame для организации данных. Целевая переменная, то есть цена дома, будет добавлена ​​в новый столбец.

# Load the California Housing dataset
california = fetch_california_housing()
df = pd.DataFrame(california.data, columns=california.feature_names)
df['PRICE'] = california.target

4. Случайный выбор образцов

Чтобы анализ был управляемым, мы случайным образом выберем 700 образцов из набора данных для нашего исследования.

# Randomly Selecting 700 Samples
df_sample = df.sample(n=700, random_state=42)

5. Анализ наших данных

В этом разделе представлен обзор набора данных с отображением первых пяти строк, чтобы понять особенности и структуру наших данных.

# Overview of the data
print("First five rows of the dataset:")
print(df_sample.head())

Выход

First five rows of the dataset:
       MedInc  HouseAge  AveRooms  AveBedrms  Population  AveOccup  Latitude  \
20046  1.6812      25.0  4.192201   1.022284      1392.0  3.877437     36.06   
3024   2.5313      30.0  5.039384   1.193493      1565.0  2.679795     35.14   
15663  3.4801      52.0  3.977155   1.185877      1310.0  1.360332     37.80   
20484  5.7376      17.0  6.163636   1.020202      1705.0  3.444444     34.28   
9814   3.7250      34.0  5.492991   1.028037      1063.0  2.483645     36.62   

       Longitude    PRICE  
20046    -119.01  0.47700  
3024     -119.46  0.45800  
15663    -122.44  5.00001  
20484    -118.72  2.18600  
9814     -121.93  2.78000  

Отображение информации о кадре данных

print(df_sample.info())

Выход


Index: 700 entries, 20046 to 5350
Data columns (total 9 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   MedInc      700 non-null    float64
 1   HouseAge    700 non-null    float64
 2   AveRooms    700 non-null    float64
 3   AveBedrms   700 non-null    float64
 4   Population  700 non-null    float64
 5   AveOccup    700 non-null    float64
 6   Latitude    700 non-null    float64
 7   Longitude   700 non-null    float64
 8   PRICE       700 non-null    float64
dtypes: float64(9)
memory usage: 54.7 KB

Отображение сводной статистики

print(df_sample.describe())

Выход

           MedInc    HouseAge    AveRooms   AveBedrms   Population  \
count  700.000000  700.000000  700.000000  700.000000   700.000000   
mean     3.937653   28.855714    5.404192    1.079266  1387.422857   
std      2.085831   12.353313    1.848898    0.236318  1027.873659   
min      0.852700    2.000000    2.096692    0.500000     8.000000   
25%      2.576350   18.000000    4.397751    1.005934   781.000000   
50%      3.480000   30.000000    5.145295    1.047086  1159.500000   
75%      4.794625   37.000000    6.098061    1.098656  1666.500000   
max     15.000100   52.000000   36.075472    5.273585  8652.000000   

         AveOccup    Latitude   Longitude       PRICE  
count  700.000000  700.000000  700.000000  700.000000  
mean     2.939913   35.498243 -119.439729    2.082073  
std      0.745525    2.123689    1.956998    1.157855  
min      1.312994   32.590000 -124.150000    0.458000  
25%      2.457560   33.930000 -121.497500    1.218500  
50%      2.834524   34.190000 -118.420000    1.799000  
75%      3.326869   37.592500 -118.007500    2.665500  
max      7.200000   41.790000 -114.590000    5.000010  

6. Разделение набора данных на обучающие и тестовые наборы

Мы разделим набор данных на функции (X) и целевую переменную (y), а затем разделим его на обучающий и тестовый наборы для обучения и оценки модели.

# Splitting the dataset into Train and Test sets
X = df_sample.drop('PRICE', axis=1)  # Features
y = df_sample['PRICE']  # Target variable

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

7. Модельное обучение

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

# Creating and training the Linear Regression model
lr = LinearRegression()
lr.fit(X_train, y_train)

8. Оценка модели

Мы сделаем прогнозы на тестовом наборе и рассчитаем среднеквадратическую ошибку (MSE) и значения R-квадрата, чтобы оценить производительность модели.

# Making predictions on the test set
y_pred = lr.predict(X_test)

# Calculating Mean Squared Error
mse = mean_squared_error(y_test, y_pred)
print(f"\nLinear Regression Mean Squared Error: {mse}")

Выход

Linear Regression Mean Squared Error: 0.3699851092128846

9. Отображение фактических и прогнозируемых значений

Здесь мы создадим DataFrame для сравнения фактических цен на жилье с прогнозируемыми ценами, сгенерированными нашей моделью.

# Displaying Actual vs Predicted Values
results = pd.DataFrame({'Actual Prices': y_test.values, 'Predicted Prices': y_pred})
print("\nActual vs Predicted:")
print(results)

Выход

Actual vs Predicted:
     Actual Prices  Predicted Prices
0          0.87500          0.887202
1          1.19400          2.445412
2          5.00001          6.249122
3          2.78700          2.743305
4          1.99300          2.794774
..             ...               ...
135        1.62100          2.246041
136        3.52500          2.626354
137        1.91700          1.899090
138        2.27900          2.731436
139        1.73400          2.017134

[140 rows x

 2 columns]

10. Визуализация результатов

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

# Visualizing the Results
plt.figure(figsize=(8, 6))
plt.scatter(y_test, y_pred, color='blue')
plt.xlabel('Actual Prices')
plt.ylabel('Predicted Prices')
plt.title('Actual vs Predicted House Prices')

# Draw the ideal line
plt.plot([0, 6], [0, 6], color='red', linestyle='--')

# Set limits to minimize empty space
plt.xlim(y_test.min() - 1, y_test.max()   1)
plt.ylim(y_test.min() - 1, y_test.max()   1)

plt.grid()
plt.show()

Complete Machine Learning Workflow with Scikit-Learn: Predicting California Housing Prices


Заключение

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

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

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/harshm03/complete-machine-learning-workflow-with-scikit-learn-predicting-california-housing-prices-4pbf?1 Если есть какие-либо нарушения, свяжитесь с Study_golang. @163.com удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3