Введение
В этом проекте вы научитесь классифицировать датасет iris с использованием модели Support Vector Classifier (SVC). Датасет iris - это классический датасет машинного обучения, содержащий информацию о различных видах ирисок, включая длину и ширину чашелистика, длину и ширину лепестка.
🎯 Задачи
В этом проекте вы научитесь:
- Импортировать необходимые библиотеки и загрузить датасет iris
- Разделить датасет на тренировочный и тестовый наборы
- Создать и обучить модель Support Vector Classifier
- Делать предсказания с использованием обученной модели
- Оценить производительность модели с использованием accuracy score и classification report
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать библиотеку scikit-learn для работы с датасетом iris
- Разделить датасет на тренировочный и тестовый наборы
- Создать и обучить модель Support Vector Classifier
- Делать предсказания с использованием обученной модели
- Оценить производительность модели с использованием accuracy score и classification report
Импортировать необходимые библиотеки и загрузить датасет
В этом шаге вы научитесь импортировать необходимые библиотеки и загрузить датасет iris. Следуйте шагам ниже, чтобы выполнить этот шаг:
В iris_classification_svm.py импортируйте необходимые библиотеки, включая те, которые используются для загрузки датасета, разделения данных, создания модели SVM и оценки ее производительности.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report
Загрузите данные iris из sklearn.datasets и разделите датасет на тренировочный и тестовый наборы. Датасет разделяется с использованием соотношения 80-20 для тренировки и тестирования, с случайным种子ом 42 для воспроизводимости.
## Продолжайте в том же файле
def load_and_split_data() -> tuple:
"""
Возвращает:
tuple: [X_train, X_test, y_train, y_test]
"""
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
return X_train, X_test, y_train, y_test
Этот код загружает датасет Iris и разделяет его на тренировочный и тестовый наборы для целей машинного обучения. Вот разбор каждой части:
- Импорт необходимых библиотек:
sklearn.datasetsиспользуется для загрузки датасетов, включая датасет Iris.sklearn.model_selectionпредоставляет утилиты для разделения датасетов на тренировочные и тестовые наборы.sklearn.svmсодержит классы для Support Vector Machines (SVM), типа алгоритма машинного обучения.sklearn.metricsвключает инструменты для оценки производительности моделей, таких как точность и отчеты классификации.
- Определение функции: Определена функция с именем
load_and_split_data. Эта функция выполняет следующие задачи:- Загружает датасет Iris:
load_iris()- это функция, предоставленнаяsklearn.datasets, которая загружает датасет цветов ириса, который является популярным датасетом для задач классификации. Он содержит измерения 150 цветов ириса из трех разных видов. - Разделение данных: Датасет разделяется на признаки (
X) и целевые метки (y). В этом случаеXбудут 4-мерными измерениями цветов ириса, аyбудут соответствующими метками видов (0, 1 или 2). - Разделение данных:
train_test_splitизsklearn.model_selectionиспользуется для разделения данных на тренировочные и тестовые подмножества. Параметрtest_size=0.2означает, что 20% данных будут использоваться для тестирования, в то время как оставшиеся 80% будут использоваться для тренировки.random_state=42обеспечивает воспроизводимость разделения; использование того же种子а (42 здесь) обеспечит один и тот же раздел каждый раз, когда код запускается. - Возвращаемые значения: Функция возвращает кортеж, содержащий
X_train,X_test,y_trainиy_test, которые являются набором признаков и целевых значений как для тренировочных, так и для тестовых данных.
- Загружает датасет Iris:
Создать и обучить модель SVM
В этом шаге вы научитесь создавать модель Support Vector Classifier и обучать ее на тренировочных данных.
## Продолжайте в том же файле
def create_and_train_SVM(X_train: list, y_train: list) -> SVC:
"""
Аргументы:
X_train: [признаки для тренировки]
y_train: [метки для тренировки]
Возвращает:
SVC: [Обученная модель Support Vector Classifier]
"""
svm = SVC()
svm.fit(X_train, y_train)
return svm
Эта функция, create_and_train_SVM, предназначена для создания экземпляра модели Support Vector Classifier (SVM) с использованием класса sklearn.svm.SVC и последующего обучения ее на предоставленных тренировочных данных. Вот подробное объяснение:
- Подпись функции: Функция принимает два аргумента:
X_train: Список или объект, подобный массиву, содержащий признаки (входные переменные) для тренировочного датасета.y_train: Список или объект, подобный массиву, содержащий соответствующие метки (выходные переменные) для тренировочного датасета.
- Создание экземпляра модели SVM: Внутри функции вызывается
SVC()без каких-либо параметров. Это создает стандартную модель Support Vector Classifier. Класс SVC в scikit-learn предлагает различные параметры для настройки модели, такие как тип ядра, регуляризация и т.д., но в этом базовом примере используются значения по умолчанию. - Обучение модели: Метод
fitобъектаsvmвызывается сX_trainиy_train. Именно здесь происходит фактическое обучение - модель учится распознавать паттерны в признаках (X_train), связанных с их соответствующими метками классов (y_train). - Возвращение обученной модели: После обучения функция возвращает обученную модель
SVC. Эта модель затем может быть использована для предсказаний на новых, невидимых данных или для оценки ее производительности с использованием тестового датасета.
Сделать предсказания
В этом шаге вы научитесь делать предсказания с использованием обученной модели SVM.
## Продолжайте в том же файле
def make_predictions(model: SVC, X_test: list) -> list:
"""
Аргументы:
model: [Обученная модель Support Vector Classifier]
X_test: [признаки для тестирования]
Возвращает:
list: [Предсказания]
"""
predictions = model.predict(X_test)
return predictions
Функция make_predictions принимает обученную модель SVM и набор тестовых признаков в качестве входных данных и возвращает список предсказанных меток для тестовых данных. Вот разбор:
- Аргументы функции:
model: Это экземпляр классаSVC(Support Vector Classifier), который уже был обучен на датасете. Предполагается, что модель знает, как классифицировать новые экземпляры на основе паттернов, которые она выучила на этапе обучения.X_test: Список или объект, подобный массиву, содержащий признаки (входные переменные) для тестового датасета. Это те невидимые примеры, для которых модель будет предсказывать метки.
- Делать предсказания: Внутри функции вызывается метод
predictмодели сX_testв качестве аргумента. Методpredictприменяет обученную модель к каждому экземпляру в тестовом наборе, чтобы оценить их метки класса. Он не требует истинных меток (y_test), только входных признаков. - Возвращение предсказаний: Затем функция возвращает эти оцененные метки в виде списка. Каждый элемент в возвращаемом списке соответствует предсказанной метке класса соответствующего экземпляра в наборе
X_testдатасета.
Оценить модель
Оцените модель, вычислив accuracy score и отобразив отчет о классификации.
## Продолжайте в том же файле
if __name__ == "__main__":
## Загрузите и разделите данные
X_train, X_test, y_train, y_test = load_and_split_data()
## Создайте и обучите модель SVM
svm_model = create_and_train_SVM(X_train, y_train)
## Сделайте предсказания
predictions = make_predictions(svm_model, X_test)
## Оцените модель
accuracy = accuracy_score(y_test, predictions)
print(f"Точность: {accuracy:.2f}")
## Отобразите отчет о классификации
print("Отчет о классификации:")
print(classification_report(y_test, predictions))
Теперь запустите скрипт из терминала:
python iris_classification_svm.py
Вывод должен быть таким:
Точность: 1.00
Отчет о классификации:
precision recall f1-score support
0 1.00 1.00 1.00 10
1 1.00 1.00 1.00 9
2 1.00 1.00 1.00 11
accuracy 1.00 30
macro avg 1.00 1.00 1.00 30
weighted avg 1.00 1.00 1.00 30
Следуя этим шагам, вы завершили проект классификации датасета iris с использованием модели Support Vector Classifier (SVC).
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



