机器学习中的分类算法是用于将输入数据分配到预定义类别中的算法。分类任务是监督学习的一种,模型根据训练数据中的输入-输出对进行学习,然后预测新的输入数据的类别。常见的分类算法包括:
- 逻辑回归(Logistic Regression)
- k-近邻(k-Nearest Neighbors, k-NN)
- 支持向量机(Support Vector Machine, SVM)
- 决策树(Decision Tree)
- 随机森林(Random Forest)
- 朴素贝叶斯(Naive Bayes)
- 神经网络(Neural Network)
我们将详细讲解其中的几种,并提供相应的代码实例。
1.逻辑回归(Logistic Regression)
逻辑回归是一种用于二分类问题的线性模型。它使用sigmoid函数将线性回归的输出转换为概率值。
原理
逻辑回归是一种线性模型,用于二分类问题。它通过学习线性关系来预测输入数据属于某个类别的概率。其核心是使用sigmoid函数将线性组合的结果映射到[0,1]区间。
公式:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
其中, z = w T x + b z = \mathbf{w}^T \mathbf{x} + b z=wTx+b,w是权重,b是偏置,x是输入特征。
损失函数(对数似然损失):
L ( y , y ^ ) = − 1 N ∑ i = 1 N [ y i log ( y ^ i ) + ( 1 − y i ) log ( 1 − y ^ i ) ] L(y, \hat{y}) = -\frac{1}{N} \sum_{i=1}^N [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] L(y,y^)=−N1i=1∑N[yilog(y^i)+(1−yi)log(1−y^i)]
其中,hat(y_i)是预测的概率。
使用场景
适用于线性可分的二分类问题,如垃圾邮件分类、信用卡欺诈检测。
优缺点
优点:
- 简单易理解
- 计算效率高
- 输出概率值,易于解释
缺点:
- 处理非线性问题能力差
- 对异常值敏感
代码实例
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 示例数据集(假设数据已准备好)
X = np.array([[0.5, 1.5], [1.5, 1.9], [2.1, 1.8], [3.2, 3.1], [3.5, 4.1], [4.2, 4.5]])
y = np.array([0, 0, 0, 1, 1, 1])
# 数据集拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 模型训练
model = LogisticRegression()
model.fit(X_train, y_train)
# 模型预测
y_pred = model.predict(X_test