防城港做网站,北京搭建公司,深圳小企业网站建设,上海企业建站咨询二分类与多分类#xff1a;概念与区别
二分类和多分类是分类任务的两种类型#xff0c;区分的核心在于目标变量#xff08;label#xff09;的类别数#xff1a; 二分类#xff1a;目标变量 y 只有两个类别#xff0c;通常记为 y∈{0,1} 或 y∈{−1,1}。 示例#xff…二分类与多分类概念与区别
二分类和多分类是分类任务的两种类型区分的核心在于目标变量label的类别数 二分类目标变量 y 只有两个类别通常记为 y∈{0,1} 或 y∈{−1,1}。 示例垃圾邮件分类垃圾邮件或非垃圾邮件。 多分类目标变量 y 包含三个或更多类别记为 y∈{1,2,…,K}。 示例手写数字识别类别为 0 到 9 的数字。 1. 二分类问题
特征与目标
输入特征向量 。输出目标 y ∈ {0,1}。模型预测预测值为类别 1 的概率 。
模型与算法 常用模型 逻辑回归支持向量机SVM决策树随机森林神经网络二分类输出层使用 Sigmoid 激活 损失函数 对数似然损失Log-Likelihood Loss 评估指标 准确率Accuracy精确率Precision召回率RecallF1 分数F1-ScoreAUC-ROC 曲线
案例代码
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, roc_auc_score# 生成二分类数据
# 参数说明n_samples100表示生成100个样本n_features4表示数据有4个特征n_classes2表示二分类问题
# n_informative2表示其中2个特征是有信息的n_redundant1表示1个特征是冗余的n_repeated0表示没有重复的特征
# random_state0表示随机种子保证结果可重复
X, y make_classification(n_samples100, n_features4, n_classes2, n_informative2, n_redundant1, n_repeated0,random_state0)# 数据集划分
# 将数据集划分为训练集和测试集test_size0.2表示测试集占20%random_state42保证划分结果可重复
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 使用逻辑回归模型进行训练
# 初始化逻辑回归模型
model LogisticRegression()
# 使用训练集数据拟合模型
model.fit(X_train, y_train)
# 预测测试集的类别
y_pred model.predict(X_test)
# 预测测试集的正类概率
y_prob model.predict_proba(X_test)[:, 1]# 评估模型性能
# 输出测试集的准确率
print(Accuracy:, accuracy_score(y_test, y_pred))
# 输出测试集的AUC-ROC分数
print(AUC-ROC:, roc_auc_score(y_test, y_prob))
输出结果
Accuracy: 0.9
AUC-ROC: 0.9090909090909091 2. 多分类问题
特征与目标
输入特征向量 。输出目标 。模型预测预测每个类别的概率 所有类别概率之和为 1。
模型与算法 常用模型 Softmax 回归多类别逻辑回归决策树与随机森林梯度提升树如 XGBoost、LightGBM神经网络输出层使用 Softmax 激活 损失函数 交叉熵损失Cross-Entropy Loss,k 是样本 i 被预测为类别 k 的概率。 评估指标 准确率Accuracy混淆矩阵Confusion Matrix平均精确率、召回率与 F1 分数Macro / Micro / Weighted
案例代码
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report# 生成二分类数据
# 参数说明n_samples100表示生成100个样本n_features4表示数据有4个特征n_classes2表示二分类问题
# n_informative2表示其中2个特征是有信息的n_redundant1表示1个特征是冗余的n_repeated0表示没有重复的特征
# random_state0表示随机种子保证结果可重复
X, y make_classification(n_samples100, n_features4, n_classes2, n_informative2, n_redundant1, n_repeated0,random_state0)# 数据集划分
# 将数据集划分为训练集和测试集test_size0.2表示测试集占20%random_state42保证划分结果可重复
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 初始化随机森林分类器模型
model RandomForestClassifier()# 使用训练集数据拟合模型
model.fit(X_train, y_train)# 使用拟合好的模型对测试集进行预测
y_pred model.predict(X_test)# 评估
# 输出模型的准确率
print(Accuracy:, accuracy_score(y_test, y_pred))
# 输出模型的分类报告包含精确度、召回率、F1分数等指标
print(Classification Report:\n, classification_report(y_test, y_pred))
输出结果
Accuracy: 0.9
Classification Report:precision recall f1-score support0 1.00 0.82 0.90 111 0.82 1.00 0.90 9accuracy 0.90 20macro avg 0.91 0.91 0.90 20
weighted avg 0.92 0.90 0.90 20 3. 二分类与多分类的区别
属性二分类多分类目标变量y∈{0,1}y∈{1,2,…,K}损失函数对数似然损失交叉熵损失预测输出类别 0 或 1 的概率每个类别的概率分布模型复杂度相对简单更复杂需要考虑类别间关系评估指标精确率、召回率、AUC 等混淆矩阵、宏平均 F1 等 4. 注意事项 模型选择 对于二分类问题许多模型如逻辑回归、SVM内置支持多分类问题可通过**一对多OvR或多对多OvO**策略将多分类问题分解为多个二分类问题。 不平衡数据 二分类和多分类中不平衡数据都会导致评估指标偏差需要关注 AUC 或调整权重。 概率解释 二分类中概率直接表示为某一类别的置信度多分类中概率分布表示样本属于每个类别的可能性。 总结而言二分类和多分类的问题框架和方法类似但多分类问题需要更复杂的模型和损失函数来捕捉类别间关系是分类任务中的重要延伸