Linear Models for Classification

一、Linear Models for Binary Classification

在这里插入图片描述在这里插入图片描述

二、Stochastic Gradient Descent

随机梯度下降算法每次迭代只找到一个点,计算该点的梯度,作为我们下一步更新w的依据。这样就保证了每次迭代的计算量大大减小,我们可以把整体的梯度看成这个随机过程的一个期望值。
在这里插入图片描述在这里插入图片描述

三、Multiclass via Logistic Regression

One­Versus­All(OVA) Decomposition。这种方法的优点是简单高效,可以使用logistic regression模型来解决;缺点是如果数据类别很多时,那么每次二分类问题中,正类和负类的数量差别就很大,数据不平衡unbalanced,这样会影响分类效果。但是,OVA还是非常常用的一种多分类算法。

四、Multiclass via Binary Classification

区别于OVA的多分类方法叫做One­Versus­One(OVO)。这种方法的优点是更加高效,因为虽然需要进行的分类次数增加了,但是每次只需要进行两个类别的比较,也就是说单次分类的数量减了。而且一般不会出现数据unbalanced的情况。缺点是需要分类的次数多,时间复杂度和空间复杂度可能都比较高。
分类问题的三种线性模型:linear classification、linear regression和logistic regression。首先介绍了这三种linear models都可以来做binaryclassification。然后介绍了比梯度下降算法更加高效的SGD算法来进行logisticregression分析。最后讲解了两种多分类方法,一种是OVA,另一种是OVO。这两种方法各有优缺点,当类别数量k不多的时候,建议选择OVA,以减少分类次数。

### Python 中常用的分类库 在 Python 生态系统中,多个强大的库支持分类算法的实现和发展。以下是几个广泛使用的库: #### Scikit-Learn Scikit-learn 是一个非常流行的机器学习库,提供了简单有效的数据挖掘和数据分析工具[^3]。该库内置了许多监督和非监督学习算法,其中包括多种用于分类的方法,如逻辑回归、支持向量机(SVM)和支持向量分类(SVC),以及随机森林等。 ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) print(f'Test set score: {round(knn.score(X_test, y_test), 4)}') ``` #### TensorFlow 和 Keras TensorFlow 是由 Google 开发的一个开源软件库,主要用于数值计算,特别是针对大规模张量操作优化过。Keras 则是一个高级神经网络 API,能够运行于 TensorFlow 上面作为后端引擎。这两个框架非常适合构建复杂的深度学习模型来进行图像识别、自然语言处理等领域中的分类任务[^2]。 ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential([ Dense(64, activation='relu', input_shape=(784,)), Dense(10, activation='softmax') ]) model.compile(optimizer=tf.keras.optimizers.Adam(), loss='sparse_categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=5, batch_size=32, validation_data=(x_val, y_val)) ``` #### PyTorch PyTorch 提供了一个灵活且高效的平台来设计和训练基于图结构的深度学习模型。它具有动态计算图的特点,在研究领域特别受欢迎。对于分类问题来说,可以很容易地定义自己的损失函数并利用自动求导机制完成参数更新过程。 ```python import torch import torch.nn.functional as F from torchvision import datasets, transforms train_loader = torch.utils.data.DataLoader( datasets.MNIST('../data', train=True, download=True, transform=transforms.Compose([transforms.ToTensor()])), batch_size=64, shuffle=True) class Net(torch.nn.Module): def __init__(self): super().__init__() self.fc1 = torch.nn.Linear(784, 64) self.fc2 = torch.nn.Linear(64, 10) def forward(self, x): x = F.relu(self.fc1(x.view(-1, 784))) return self.fc2(x) net = Net() optimizer = torch.optim.SGD(net.parameters(), lr=0.01) for epoch in range(1): for data, target in train_loader: optimizer.zero_grad() output = net(data) loss = F.cross_entropy(output, target) loss.backward() optimizer.step() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值