продолжить с Часть ПЕРВАЯ…
Шаг 4: Обучение модели
После того, как вы выбрали свой алгоритм и подготовили свои данные, вы можете обучить свою модель, используя следующий код:
import pandas as pd import sklearn from sklearn.svm import SVR def train_model() -> SVR: """Trains a model on the data in the 'clean_house_prices.csv' file. Returns: A trained SVR model. """ # Load the training data into a pandas dataframe df = pd.read_csv('clean_house_prices.csv') # Split the data into a training set and a test set X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(df.drop('price', axis=1), df['price'], test_size=0.2) # Create an SVR model model = SVR() # Train the model on the training set model.fit(X_train, y_train) # Print the model's accuracy on the test set print(f'Model accuracy on test set: {model.score(X_test, y_test)}') return model
Затем вы можете обучить модель, вызвав функцию train_model
:
model = train_model()
Шаг 5: Оценка модели
Чтобы оценить производительность модели, вы можете использовать тестовый набор, набор данных, зарезервированный для оценки модели и не используемый во время обучения. В следующем коде показано, как оценить модель с помощью набора тестов:
import pandas as pd import sklearn def evaluate_model(model: SVR) -> float: """Evaluates a model on the data in the 'clean_house_prices_test.csv' file. Args: model: The model to evaluate. Returns: The mean squared error between the predicted and actual values. """ # Load the test data into a pandas dataframe df_test = pd.read_csv('clean_house_prices_test.csv') # Extract the features and target values from the test data X_test = df_test.drop('price', axis=1) y_test = df_test['price'] # Make predictions on the test set using the model y_pred = model.predict(X_test) # Calculate the mean squared error between the predicted and actual values mse = sklearn.metrics.mean_squared_error(y_test, y_pred) # Print the mean squared error print(f'Mean squared error: {mse}') return mse
Затем вы можете оценить модель, вызвав функцию evaluate_model
:
mse = evaluate_model(model)
Шаг 6: Улучшение модели
Если производительность модели неудовлетворительна, вы можете попытаться улучшить ее, изменив алгоритм или изменив параметры алгоритма. Вы также можете использовать больше данных для обучения или по-другому предварительно обработать данные. Например, вы можете попробовать использовать другой алгоритм регрессии, такой как случайный лес или алгоритм повышения. Вы также можете попробовать настроить параметры модели SVR, используя перекрестную проверку и поиск по сетке.
Перекрестная проверка — это метод оценки производительности модели на различных подмножествах данных и усреднения результатов. Это помогает уменьшить влияние случайности в данных и улучшить способность модели к обобщению.
Поиск по сетке — это метод поиска в наборе возможных значений параметров и нахождения наилучшей комбинации параметров. Это можно сделать с помощью функции GridSearchCV
из scikit-learn.
Вот пример того, как использовать перекрестную проверку и поиск по сетке для настройки параметров модели SVR:
import sklearn from sklearn.model_selection import GridSearchCV def improve_model(model: SVR, data: pd.DataFrame, target: pd.Series) -> SVR: """Improves a model using cross-validation and grid search. Args: model: The model to improve. data: The data to use for training and validation. target: The target values for the data. Returns: An improved version of the input model. """ # Create a list of parameter values to try param_grid = [ {'C': [1, 10, 100, 1000], 'kernel': ['linear']}, {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']}, ] # Create a grid search object with a 5-fold cross-validation grid_search = GridSearchCV(model, param_grid, cv=5) # Fit the grid search object to the data grid_search.fit(data, target) # Print the best parameters and best score print(f'Best parameters: {grid_search.best_params_}') print(f'Best score: {grid_search.best_score_}') return grid_search.best_estimator_
Шаг 7: Реализация модели
После успешного обучения и оценки модели ее можно внедрить в приложение или использовать для прогнозирования новых данных.
Чтобы использовать модель для прогнозирования, вы можете просто передать ей новые данные и вызвать метод predict
. Например, чтобы спрогнозировать цену дома с определенными характеристиками:
import numpy as np # Create a numpy array of shape (1, n) containing the features of the house X_new = np.array([[3, 1000, 50, 1]]) # Make a prediction using the model prediction = model.predict(X_new) # Print the prediction print(f'Predicted price: {prediction[0]}')
Вы также можете использовать модель в приложении, сохранив ее в файл и загрузив при необходимости. Для сохранения модели можно использовать библиотеку pickle
import pickle # Save the model to a file with open('model.pkl', 'wb') as f: pickle.dump(model, f)
Чтобы загрузить модель из файла, вы можете использовать следующий код:
# Load the model from a file with open('model.pkl', 'rb') as f: model = pickle.load(f)
Важно отметить, что модель сможет делать прогнозы для новых данных только в том случае, если она имеет те же функции, что и данные, на которых она обучалась. Если вы хотите использовать модель для прогнозирования данных с различными функциями, вам потребуется изменить модель или переобучить ее с использованием новых данных.
Выводы
В заключение мы обсудили процесс обучения, оценки и реализации модели машинного обучения с использованием Python. Мы собрали данные с веб-сайта, очистили и подготовили их для обучения модели, выбрали алгоритм, обучили модель, оценили ее производительность и улучшили ее с помощью перекрестной проверки и поиска по сетке. Наконец, мы реализовали модель в приложении и использовали ее для прогнозирования новых данных.
Есть много других аспектов машинного обучения, которые мы не рассмотрели в этом проекте, таких как визуализация данных, разработка функций и метрики оценки модели. В будущих статьях мы углубимся в эти темы и рассмотрим другие методы и инструменты машинного обучения.
Мы также обсудим, следуя списку в статье «Навыки для успеха: 6 навыков, которыми должен обладать ИИ-инженер», мы начнем говорить о машинном обучении, научимся использовать этот удивительный инструмент.