Начало работы с машинным обучением на Python

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

Далее я шаг за шагом объясню, как начать работу с машинным обучением на Python, и представлю некоторые распространённые библиотеки, которые вам понадобятся.

Установка Python и необходимых библиотек

Способ 1: Официальный установщик

Сначала убедитесь, что у вас установлен Python. Вы можете посетить официальный сайт Pythonhttps://www.python.org/, чтобы скачать и установить последнюю версию.

Система Windows:

# 1. 下载安装程序后运行
# 2. 勾选 "Add Python to PATH"
# 3. 选择 "Install for all users"
# 4. 点击 "Install" 开始安装

Система macOS:

# 方法1:使用官网安装包
# 下载 .pkg 文件并双击安装
# 方法2:使用 Homebrew
brew install python3

Система Linux:

# Ubuntu/Debian
sudo apt update
sudo apt install python3 python3-pip
# CentOS/RHEL
sudo yum install python3 python3-pip

Способ 2: дистрибутив Anaconda

Anaconda — это дистрибутив Python, созданный специально для data science, как «набор инструментов для машинного обучения» со всеми предустановленными инструментами.

Преимущества Anaconda

  1. Предустановленные распространённые библиотеки: NumPy, Pandas, Scikit-learn и т. д.
  2. Управление средами: команды conda управляют виртуальными средами
  3. Графический интерфейс: Anaconda Navigator обеспечивает визуальные операции
  4. Кроссплатформенность: Поддерживает все основные операционные системы

Установка Anaconda

  1. Посетитеhttps://www.anaconda.com/products/distribution
  2. Скачайте установочный пакет для вашей системы
  3. Запустите установщик и следуйте подсказкам, чтобы завершить установку

Проверьте установку:

conda --version
python --version

Если вы еще не знакомы с Python, вы можете сначала изучить нашУчебник по Python。

Если вы еще не знакомы с Conda, вы можете сначала изучить нашУчебник по Anaconda。

Рекомендуется установить Anaconda для создания виртуальных окружений.

Зачем нужны виртуальные окружения?

Виртуальное окружение — это как независимая кухня, подготовленная для каждого проекта, не дающая "приправам" (версиям библиотек) разных проектов мешать друг другу.

Преимущества виртуальных окружений

  1. Изоляция зависимостей: разные проекты используют разные версии библиотек
  2. Воспроизводимость окружения: удобно воссоздавать одно и то же окружение на других машинах
  3. Управление разрешениями: избегайте загрязнения системного окружения Python
  4. Очистка проекта: удаляйте связанное окружение при удалении проекта

Управление окружениями с помощью conda

# 创建环境
conda create -n ml_env python=3.8
# 激活环境
conda activate ml_env
# 安装包
conda install numpy pandas scikit-learn
# 列出环境
conda env list
# 删除环境
conda env remove -n ml_env

Настройка инструментов разработки

Jupyter Notebook

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

Установка и запуск Jupyter

# 安装 Jupyter
pip install jupyter
# 启动 Jupyter Notebook
jupyter notebook
# 启动 Jupyter Lab(更现代的界面)
jupyter lab

Основы использования Jupyter

Пример

# Пример использования Jupyter Notebook
# Запустите следующий код в Jupyter
# 1. Импорт и исследование данных
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Создание тестовых данных
data = {
    'Имя': ['Чжан Сань', 'Ли Сы', 'Ван У', 'Чжао Лю'],
    'Age': [25, 30, 35, 28],
    'Город': ['Пекин', 'Шанхай', 'Гуанчжоу', 'Shenzhen'],
    'Зарплата': [15000, 20000, 18000, 22000]
}
df = pd.DataFrame(data)
print("Предварительный просмотр данных:")
print(df.head())
# 2. Визуализация данных
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.bar(df['Name'], df['Age'])
plt.title('Age distribution')
plt.xlabel('Name')
plt.ylabel('Возраст')
plt.subplot(1, 2, 2)
plt.bar(df['Name'], df['Salary'])
plt.title('Распределение зарплаты')
plt.xlabel('Name')
plt.ylabel('Зарплата')
plt.tight_layout()
plt.show()
# 3. Простой статистический анализ
print("\n"Базовая статистическая информация:")
print(df.describe())
print("\n"Распределение по городам:")
print(df['City'].value_counts())

Конфигурация VS Code

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

Рекомендуемые плагины

  1. Python: официальный плагин Python от Microsoft
  2. Jupyter: Поддерживает Jupyter Notebook
  3. Python Docstring Generator: Автоматически генерирует docstrings
  4. Bracket Pair Colorizer: Цветовая индикация пар скобок
  5. GitLens: Расширяет функциональность Git

Пример конфигурации VS Code

// .vscode/settings.json
{
    "python.defaultInterpreterPath": "./envs/ml_env/bin/python",
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.formatting.provider": "black",
    "python.testing.pytestEnabled": true,
    "jupyter.askForKernelRestart": false,
    "editor.fontSize": 14,
    "editor.tabSize": 4,
    "editor.insertSpaces": true
}

Установка библиотек машинного обучения

Распространённые библиотеки машинного обучения:

pip install numpy pandas matplotlib seaborn scikit-learn

Если вы планируете использовать фреймворк глубокого обучения, установите следующее:

pip install torch  # 或者
pip install tensorflow

Связанные курсы:

При использовании Python для машинного обучения весь процесс обычно состоит из следующих шагов:

  1. Импортируйте необходимые библиотеки- Например, NumPy, Pandas и Scikit-learn.

  2. Загрузите и подготовьте данные- Данные — это основа машинного обучения. Вам нужно загрузить данные и выполнить необходимую предварительную обработку (например, очистка данных, заполнение пропущенных значений и т. д.).

  3. Выбор моделей и алгоритмов- Выбор подходящих алгоритмов машинного обучения в зависимости от задачи (например, линейная регрессия, деревья решений и т. д.).

  4. Обучение модели- Используйте данные обучающей выборки для обучения модели.

  5. Оценка модели- Используйте тестовую выборку для оценки точности модели и оптимизируйте модель на основе результатов оценки.

  6. Настройка модели и гиперпараметров- Настройте гиперпараметры модели на основе результатов оценки, чтобы дополнительно оптимизировать производительность модели.


Простой пример машинного обучения: классификация с помощью Scikit-learn

Scikit-learn (сокращённо Sklearn) — это библиотека машинного обучения с открытым исходным кодом, построенная на библиотеках для научных вычислений, таких как NumPy, SciPy и matplotlib, предоставляющая простые и эффективные инструменты для интеллектуального анализа данных и анализа данных.

Scikit-learn включает множество распространённых алгоритмов машинного обучения, в том числе:

  • Линейная регрессия, гребневая регрессия, Lasso-регрессия
  • Машины опорных векторов (SVM)
  • Деревья решений, случайные леса, деревья градиентного бустинга
  • Алгоритмы кластеризации (например, K-Means, иерархическая кластеризация, DBSCAN)
  • Методы снижения размерности (например, PCA, t-SNE)
  • Нейронные сети

Далее мы продемонстрируем процесс машинного обучения на простой задаче классификации — наборе данных Iris. Набор данных Iris — это классический набор данных, содержащий 150 образцов и описывающий длину и ширину лепестков и чашелистиков трёх различных видов цветков ириса.

Шаг 1: Импорт библиотек

Импортируйте необходимые библиотеки Python:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

Шаг 2: Загрузка данных

Загрузите набор данных Iris:

Пример

# Загрузить набор данных Iris
iris = load_iris()

# Преобразовать данные в pandas DataFrame
X = pd.DataFrame(iris.data, columns=iris.feature_names)  # Данные признаков
y = pd.Series(iris.target)  # Данные меток

# Отобразить первые пять строк данных
print(X.head())

Выводимые данные выглядят следующим образом:

   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0                5.1               3.5                1.4               0.2
1                4.9               3.0                1.4               0.2
2                4.7               3.2                1.3               0.2
3                4.6               3.1                1.5               0.2
4                5.0               3.6                1.4               0.2

Шаг 3: Разделение набора данных

Разделите набор данных на обучающий и тестовый наборы, обычно используя соотношение 70% для обучающего набора и 30% для тестового:

Пример

# Разделение обучающего и тестового наборов (80% обучение, 20% тест)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Шаг 4: Масштабирование признаков (стандартизация)

Многие алгоритмы машинного обучения зависят от масштаба признаков, особенно такие алгоритмы, как K-ближайших соседей. Чтобы гарантировать, что каждый признак имеет среднее значение 0 и стандартное отклонение 1, мы используем стандартизацию для обработки данных:

Пример

# Стандартизировать признаки
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

Шаг 5: Выбор модели и обучение

В этом примере мы выбираем алгоритм K-ближайших соседей (KNN) для классификации:

Пример

# Создать классификатор KNN
knn = KNeighborsClassifier(n_neighbors=3)

# Обучаем модель
knn.fit(X_train, y_train)

Шаг 6: Оценка модели

После обучения мы используем тестовую выборку для оценки точности модели:

Пример

# Предсказать тестовую выборку
y_pred = knn.predict(X_test)

# Вычислите точность
accuracy = accuracy_score(y_test, y_pred)
print(f'Точность модели: {accuracy:.2f}')

После запуска приведённого выше кода вывод будет следующим:

模型准确率: 1.00

Шаг 7: Визуализация результатов (необязательно)

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

Пример

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# Загрузить набор данных Iris
iris = load_iris()

# Преобразовать данные в pandas DataFrame
X = pd.DataFrame(iris.data, columns=iris.feature_names)  # Данные признаков
y = pd.Series(iris.target)  # Данные меток

# Разделение обучающего и тестового наборов (80% обучение, 20% тест)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Стандартизировать признаки
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Создать классификатор KNN
knn = KNeighborsClassifier(n_neighbors=3)

# Обучаем модель
knn.fit(X_train, y_train)

# Предсказать тестовую выборку
y_pred = knn.predict(X_test)

# Вычислите точность
accuracy = accuracy_score(y_test, y_pred)

# Визуализация — это всего лишь простой пример; вы можете выбрать метод построения графика в зависимости от конкретной ситуации
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, cmap='viridis', marker='o')
plt.title("Результаты классификации KNN")
plt.xlabel("Признак 1")
plt.ylabel("Признак 2")
plt.show()

Выходное изображение показано ниже:

Другие расширения