机器学习完整流程详解

1. 数据加载 (Data Loading)

目的:将原始数据加载到Python环境中,准备进行分析和处理

常用方法

python 复制代码
# 从CSV文件加载
import pandas as pd
data = pd.read_csv('dataset.csv')

# Scikit-learn内置数据集
from sklearn import datasets
iris = datasets.load_iris()  # 加载鸢尾花数据集
digits = datasets.load_digits()  # 加载手写数字数据集

# 其他格式
# data = pd.read_excel('dataset.xlsx')  # Excel文件
# data = pd.read_json('dataset.json')  # JSON文件

关键点

  • 检查数据是否加载正确:data.head(), data.shape
  • 了解数据的基本结构:特征、标签的分布

2. 数据探索 (Exploratory Data Analysis, EDA)

目的:理解数据特征、发现模式、识别问题

常用操作

python 复制代码
# 基本统计信息
print(data.describe())

# 检查缺失值
print(data.isnull().sum())

# 可视化探索
import matplotlib.pyplot as plt
import seaborn as sns

# 特征分布直方图
data.hist(figsize=(12, 8))
plt.show()

# 特征间关系
sns.pairplot(data, hue='target_column')  # 分类问题时特别有用
plt.show()

关键点

  • 识别异常值、缺失值
  • 理解特征之间的关系
  • 发现数据不平衡等问题

3. 数据划分 (Data Splitting)

目的:将数据分为训练集和测试集,有时还包括验证集

常用方法

python 复制代码
from sklearn.model_selection import train_test_split

# 假设X是特征,y是标签
X = data.drop('target_column', axis=1)  # 特征
y = data['target_column']  # 标签

# 划分数据集 (80%训练,20%测试)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, 
    test_size=0.2, 
    random_state=42  # 随机种子确保可重复性
)

关键点

  • 保持数据分布一致性(使用stratify=y处理不平衡数据)
  • 测试集大小通常为20-30%
  • 随机种子(random_state)确保结果可重现

4. 数据预处理 (Data Preprocessing)

目的:将原始数据转换为更适合机器学习模型的格式

常见操作

特征缩放

python 复制代码
from sklearn.preprocessing import StandardScaler, MinMaxScaler

scaler = StandardScaler()  # 标准化 (均值0,方差1)
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)  # 注意:使用训练集的参数转换测试集

处理缺失值

python 复制代码
from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='mean')  # 也可以用'median'或'most_frequent'
X_train_imputed = imputer.fit_transform(X_train)
X_test_imputed = imputer.transform(X_test)

分类特征编码

python 复制代码
from sklearn.preprocessing import OneHotEncoder

encoder = OneHotEncoder(handle_unknown='ignore')
X_train_encoded = encoder.fit_transform(X_train[categorical_cols])
X_test_encoded = encoder.transform(X_test[categorical_cols])

关键点

  • 所有预处理都应先拟合(fit)训练数据,然后转换(transform)测试数据
  • 预处理步骤可以组合使用Pipeline

5. 模型训练 (Model Training)

目的:使用训练数据学习特征与标签之间的关系

基本模式

python 复制代码
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier

# 创建模型实例
model = LogisticRegression()
# 或 model = RandomForestClassifier(n_estimators=100)

# 训练模型
model.fit(X_train_preprocessed, y_train)

关键点

  • 不同算法有不同的超参数需要设置
  • 训练前确保数据已经正确预处理
  • 可以使用交叉验证评估训练效果

6. 模型评估 (Model Evaluation)

目的:评估模型在未见过的数据上的表现

常用方法

分类问题

python 复制代码
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report

y_pred = model.predict(X_test_preprocessed)

# 准确率
print("Accuracy:", accuracy_score(y_test, y_pred))

# 混淆矩阵
print(confusion_matrix(y_test, y_pred))

# 分类报告
print(classification_report(y_test, y_pred))

回归问题

python 复制代码
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

y_pred = model.predict(X_test_preprocessed)

print("MSE:", mean_squared_error(y_test, y_pred))
print("R² Score:", r2_score(y_test, y_pred))

关键点

  • 永远在测试集上评估最终模型性能
  • 根据问题类型选择合适的评估指标
  • 好的模型应该在训练集和测试集上表现均衡

完整示例流程(鸢尾花数据集)

python 复制代码
# 1. 加载数据
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target

# 2. 数据探索
print("特征名称:", iris.feature_names)
print("类别名称:", iris.target_names)
print("数据形状:", X.shape)

# 3. 数据划分
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 4. 数据预处理
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 5. 模型训练
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(max_iter=200)
model.fit(X_train_scaled, y_train)

# 6. 模型评估
from sklearn.metrics import classification_report
y_pred = model.predict(X_test_scaled)
print(classification_report(y_test, y_pred))

这个流程是机器学习项目的基础框架。随着你的进步,你会学习到更高级的技术,如特征工程、超参数调优、模型集成等,但这些都是在掌握了这个基本流程之后的事情。

相关推荐
OceanBase数据库官方博客4 小时前
OceanBase DataPilot AIP:Ontology 承载AI能力面的另一条路
人工智能·oceanbase
笨鸟先飞,勤能补拙5 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
一次旅行5 小时前
AI 前沿日报 | 2026年07月31日
人工智能
2601_963749105 小时前
标题:越华环保集团|面向美丽河湖项目的数字化污水治理云边协同采集架构设计
人工智能
沐籽李5 小时前
从溶剂可及表面积SASA理解抗体结构与工程改造
人工智能·药物设计·aidd·sasa
智慧物业老杨5 小时前
物业如何做好预算管理?落地架构逻辑
人工智能·架构
微学AI5 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
城管不管5 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
boppu6 小时前
布草特殊污渍去渍剂的种类及作用
大数据·人工智能
AIsoft_86886 小时前
会议录音转文字与AI纪要工具推荐:免费额度与核心功能对比指南
人工智能