Skip to content

经典算法

机器学习算法虽然很多,但核心思想相通。这里覆盖最常用的四个算法。

flowchart TD
A[机器学习算法] --> B[回归]
A --> C[分类]
B --> D[线性回归]
C --> E[逻辑回归]
C --> F[决策树]
C --> G[KNN]

名字叫”回归”但用于分类。用 Sigmoid 函数将输出映射到 [0,1][0, 1],表示概率:

P(y=1x)=11+e(wx+b)P(y=1|x) = \frac{1}{1 + e^{-(wx+b)}}
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, n_features=4, random_state=42)
model = LogisticRegression()
model.fit(X, y)
print(f"准确率: {model.score(X, y):.3f}")
# predict_proba 返回每个类别的概率
print(f"前 3 个样本的预测概率:\n{model.predict_proba(X[:3])}")

通过递归分裂数据,构建树形决策规则。每个节点问一个问题,根据答案走向不同分支:

flowchart TD
A[年龄 > 30?] -->|| B[收入 > 5万?]
A -->|| C[学生?]
B -->|| D[批准]
B -->|| E[拒绝]
C -->|| F[批准]
C -->|| G[拒绝]
from sklearn.tree import DecisionTreeClassifier, export_text
model = DecisionTreeClassifier(max_depth=3, random_state=42)
model.fit(X, y)
# 打印决策规则
print(export_text(model))

最简单的分类算法——新样本的类别由最近的 K 个邻居投票决定:

from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X, y)
print(f"准确率: {model.score(X, y):.3f}")
场景推荐算法原因
数据量大、特征多逻辑回归简单高效,可解释
需要可解释的规则决策树可视化决策过程
数据量小、无假设KNN不需要训练
非线性关系决策树天然处理非线性
需要概率输出逻辑回归输出是概率