中小企业建网站哪个好,毕设做桌面软件还是网站,百度搜索引擎属于什么引擎,2022今天刚刚发生地震了1. 分类的基本概念
在机器学习的有监督学习中#xff0c;分类一种常见任务#xff0c;它的目标是将输入数据分类到预定的类别中。具体来说#xff1a;
分类任务的常见应用#xff1a; 垃圾邮件分类#xff1a;判断一封电子邮件是否是垃圾邮件 。 医学诊断#xff1a;…1. 分类的基本概念
在机器学习的有监督学习中分类一种常见任务它的目标是将输入数据分类到预定的类别中。具体来说
分类任务的常见应用 垃圾邮件分类判断一封电子邮件是否是垃圾邮件 。 医学诊断根据病人的症状、检查结果等特征预测病人的疾病类型如癌症、糖尿病等。
分类任务的类型 二分类Binary Classification 在二分类问题中模型需要将输入数据分为两个类别输入属于两个类别中的一个。如判断一封邮件是垃圾邮件还是非垃圾邮件。 多分类Multiclass Classification 在多分类问题中模型需要将输入数据分为超过两个类别输入属于多个类别中的一个。如手写数字识别数字 0 到 9根据图像内容将其分类为一个数字。 多标签分类Multilabel Classification 多标签分类任务是指每个样本可以同时属于多个类别也就是一个样本可以同时拥有多个标签。如一部电影可以同时属于“动作”和“科幻”两个类别。
分类模型的常用算法 逻辑回归Logistic Regression、支持向量机SVM, Support Vector Machine、 K-近邻算法KNN, K-Nearest Neighbors、 决策树Decision Trees、 随机森林Random Forest等。
回归和分类的区别
回归Regression 回归任务的目标是预测一个连续的数值输出模型输出的是一个实数值。回归常用于预测数量、价格、温度等连续型变量。分类Classification 分类任务的目标是将输入样本分配到有限的类别中它的输出是离散的标签通常是类别的编号或名称。分类问题通常用于处理类别标签的任务。
2. 逻辑回归Logistic Regression
逻辑回归Logistic Regression是一种广泛使用的线性分类模型尽管它的名字中带有“回归”二字但它其实是一种用于分类任务的算法特别适用于二分类问题也可以通过扩展来处理多分类问题。逻辑回归通过使用Sigmoid函数将线性回归的输出转换为概率值这个概率值表示一个样本属于某个类别的概率从而进行分类预测。 Sigmoid函数将线性回归的结果 转换为一个介于 0 和 1 之间的概率值 y ^ \hat{y} y^ 通常通过设置一个阈值比如 0.5来进行分类判断。如果 y ^ \hat{y} y^ 0.5 则预测为类别 1否则类别为0。 逻辑回归的损失函数 与线性回归的均方误差MSE不同做二分类的逻辑回归使用的是对数损失函数Log Loss用于度量模型输出概率与真实标签之间的差异。 逻辑回归模型训练逻辑回归通过最小化损失函数来训练模型常用的方法是梯度下降。训练过程中算法会迭代地调整模型参数 以最小化损失函数从而使得模型的预测与真实标签更接近。
3. 逻辑回归做二分类任务的实例代码可视化
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 1. 生成一个二维特征的二分类数据集
X, y make_classification(n_samples400, n_features2, n_informative2, n_redundant0,n_clusters_per_class1, random_state42)# 2. 数据标准化可选但常见做法
scaler StandardScaler()
X_scaled scaler.fit_transform(X)# 3. 将数据分为训练集和测试集
X_train, X_test, y_train, y_test train_test_split(X_scaled, y, test_size0.3, random_state42)# 4. 数据可视化展示训练数据的分布
plt.figure(figsize(8, 6))
plt.scatter(X_train[y_train 0][:, 0], X_train[y_train 0][:, 1], colorblue, labelClass 0, alpha0.7)
plt.scatter(X_train[y_train 1][:, 0], X_train[y_train 1][:, 1], colorred, labelClass 1, alpha0.7)
plt.xlabel(Feature 1)
plt.ylabel(Feature 2)
plt.title(Training Data - Class Distribution)
plt.legend()
plt.show() # 5. 创建逻辑回归模型并训练
model LogisticRegression()
model.fit(X_train, y_train)# 6. 绘制决策边界函数
def plot_decision_boundary(X, y, model):# 生成网格点h 0.01x_min, x_max X[:, 0].min() - 1, X[:, 0].max() 1y_min, y_max X[:, 1].min() - 1, X[:, 1].max() 1xx, yy np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))# 使用模型进行预测Z model.predict(np.c_[xx.ravel(), yy.ravel()])Z Z.reshape(xx.shape)# 绘制决策边界plt.contourf(xx, yy, Z, alpha0.75, cmapbwr)plt.colorbar()# 绘制数据点plt.scatter(X[:, 0], X[:, 1], cy, cmapbwr, s30, edgecolorsk)plt.xlabel(Feature 1)plt.ylabel(Feature 2)plt.title(Logistic Regression Decision Boundary)
# 7. 可视化训练集的决策边界
plt.figure(figsize(8, 6))
plot_decision_boundary(X_train, y_train, model)
plt.show()# 8. 在测试集上评估模型
test_accuracy model.score(X_test, y_test)
print(fTest Accuracy: {test_accuracy:.2f})
#Test Accuracy: 0.88解释一下决策边界 决策边界指的是在特征空间中将不同类别的样本分开的“边界”或“界限”。它是一个假设函数的边界能够将数据点分到不同的类别。
假设有一个二维数据集其中每个数据点由两个特征x 和 y构成类别有两种比如“0”和“1”。那么决策边界就是在二维平面上一个将类别 0 和类别 1 分开的曲线或直线如上图。
最后 分类任务还有很多其他算法每个都分开写博客说明这里只介绍逻辑回归。