通往 AI 之路:Python 机器学习入门-机器学习基本概念

机器学习基本概念

机器学习是人工智能的重要分支,它依赖数学和统计学方法来构建模型,处理和分析数据。本章介绍了机器学习的基本概念,包括监督学习与无监督学习的区别,数据集的划分方式,过拟合与欠拟合的问题,以及交叉验证的方法。这些基础知识对理解和应用机器学习至关重要。


1. 监督学习 vs 无监督学习

1.1 监督学习

监督学习(Supervised Learning)是一种学习方法,它使用带有标签的数据进行训练,使模型能够学习输入与输出之间的映射关系。

监督学习的常见算法:
  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 支持向量机(SVM)
  • 决策树(Decision Tree)
  • 随机森林(Random Forest)
  • 神经网络(Neural Networks)
示例:使用 Scikit-learn 进行监督学习
python 复制代码
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np

# 生成数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)
print("预测值:", predictions)

1.2 无监督学习

无监督学习(Unsupervised Learning)是指没有标签的数据,模型需要自己发现数据中的模式或结构。

无监督学习的常见算法:
  • 聚类(Clustering):K-Means、DBSCAN、层次聚类
  • 降维(Dimensionality Reduction):PCA、t-SNE、LDA
示例:使用 K-Means 进行聚类
python 复制代码
from sklearn.cluster import KMeans
import numpy as np

# 生成数据
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])

# K-Means 聚类
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
print("聚类标签:", labels)

2. 训练集、测试集、验证集

在机器学习任务中,我们通常将数据集划分为:

  • 训练集(Training Set):用于训练模型
  • 验证集(Validation Set):用于调整超参数
  • 测试集(Test Set):用于评估最终模型性能
python 复制代码
from sklearn.model_selection import train_test_split
import numpy as np

# 生成数据
X = np.arange(1, 101).reshape(-1, 1)
y = np.arange(1, 101)

# 划分训练集(60%)、验证集(20%)、测试集(20%)
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

3. 过拟合与欠拟合

3.1 过拟合(Overfitting)

  • 训练集上的表现很好,但测试集上的表现很差。
  • 解决方案:使用正则化(L1/L2)、增加数据量、降低模型复杂度。

3.2 欠拟合(Underfitting)

  • 模型过于简单,无法捕捉数据中的模式。
  • 解决方案:增加模型复杂度、增加特征、使用更强的算法。
python 复制代码
from sklearn.linear_model import Ridge

# 使用 L2 正则化(Ridge 回归)
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)

4. 交叉验证(Cross Validation)

交叉验证是一种评估模型性能的技术,可以减少模型对训练数据的依赖,提高泛化能力。

4.1 K 折交叉验证(K-Fold Cross Validation)

将数据集分成 K 份,轮流使用其中 K-1 份训练,1 份测试。

python 复制代码
from sklearn.model_selection import KFold, cross_val_score
from sklearn.linear_model import LinearRegression

kf = KFold(n_splits=5)
model = LinearRegression()
scores = cross_val_score(model, X, y, cv=kf)
print("K 折交叉验证得分:", scores)

4.2 分层 K 折交叉验证(Stratified K-Fold)

适用于类别不均衡数据。

python 复制代码
from sklearn.model_selection import StratifiedKFold
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
skf = StratifiedKFold(n_splits=5)

4.3 留一法(LOO,Leave-One-Out)

每次使用 n-1 个样本训练,剩下 1 个样本测试。

python 复制代码
from sklearn.model_selection import LeaveOneOut
loo = LeaveOneOut()
scores = cross_val_score(model, X, y, cv=loo)
print("LOO 交叉验证得分:", scores.mean())

4.4 随机分割交叉验证(Shuffle Split)

适用于大数据集,减少计算量。

python 复制代码
from sklearn.model_selection import ShuffleSplit
ss = ShuffleSplit(n_splits=5, test_size=0.2, random_state=42)
scores = cross_val_score(model, X, y, cv=ss)

4.5 时间序列交叉验证

适用于时间序列数据,不能随机分割。

python 复制代码
from sklearn.model_selection import TimeSeriesSplit
tscv = TimeSeriesSplit(n_splits=3)
scores = cross_val_score(model, X, y, cv=tscv)

结论

本章介绍了机器学习的基本概念,包括监督学习与无监督学习、数据集划分、过拟合与欠拟合以及交叉验证方法。理解这些基础知识可以帮助我们更好地训练和优化机器学习模型。

相关推荐
TextIn智能文档云平台8 分钟前
LLM 文档处理:如何让 AI 更好地理解中文 PDF 中的复杂格式?
人工智能·pdf
Blossom.1189 分钟前
把AI“撒”进农田:基于极值量化与状态机的1KB边缘灌溉决策树
人工智能·python·深度学习·算法·目标检测·决策树·机器学习
Red Car9 分钟前
如何向文件夹内所有PDF增加水印
python·pdf
码事漫谈12 分钟前
从外行到AI指挥官:你必须掌握的五大「程序员思维」
后端
Moonbit13 分钟前
MoonBit 开发者激励计划开启|赢取价值 $20 Copilot 月卡权益!
后端
码事漫谈15 分钟前
通信的三种基本模式:单工、半双工与全双工
后端
Q_Q51100828519 分钟前
python+uniapp基于微信小程序团购系统
spring boot·python·微信小程序·django·uni-app·node.js·php
takashi_void21 分钟前
本地实现斯坦福小镇(利用大语言模型使虚拟角色自主发展剧情)类似项目“Microverse”
人工智能·语言模型·自然语言处理·godot·游戏程序·斯坦福小镇
前端中后台22 分钟前
如何防止短信验证码接口被盗刷
后端
java1234_小锋39 分钟前
TensorFlow2 Python深度学习 - 循环神经网络(LSTM)示例
python·rnn·深度学习·tensorflow2