多标签分类是指机器学习中为每个样本分配多个目标标签的问题,其中标签表示样本点的属性,不需要互斥。
我正在开发一个使用人工神经网络的入场预测系统。我在训练模型时损失很大。以下是与数据集和模型相关的必要信息。 数据集: 对于我上校...
我有一个 OneVsOne 模型,在文本特征和目标字段上运行良好。为了发展到多类模型(即具有多个文本特征字段),我相信 OneVsRest 与 Logistic Regres...
如何在 PyTorch 中创建 14 种疾病类别的多标签混淆矩阵?
我正在研究 14 种不同疾病类别的多标签分类任务。我已经训练了我的模型,我想生成一个多标签混淆矩阵,其中 x 轴和 y 轴
如何对大多数同时出现在一个类中的标签进行聚类(在多标签分类问题中)
对大多数一起出现在数据框中的标签进行聚类(在多标签分类问题中)?例如我有这个数据框: 文字| 类型 =========================== 文字 1 | [...
机器学习:使用卷积神经网络将图像分类为 3 类(狗或猫或两者都不是)
如果我能在思考这个问题时得到一些帮助,我将不胜感激。我有一个分类器,可以准确地将图像成功分类为狗或猫。我有一个很好的数据集可以训练...
我必须预处理一个功能,该功能基本上是编码为字符串的数字代码列表,我想对其进行编码,以便输出是每个数字的频率数组。
MultiLabelBinarizer:inverse_transform 如何获得根据概率排序的标签列表?
我正在做多标签分类,我使用 MultiLabelBinarizer 将标签列表转换为零和一。 我可以使用 inverse_transform 获取标签,这是超级的。然而,在
如何使用MultiLabelBinarizer进行多标签分类?
我正在尝试进行多标签分类。但我真的陷入了数据预处理的困境。我的目标数据位于单独的文件中。目标数据看起来像这样 身份标签 0 1 ...
我对使用 GCN 进行节点分类非常感兴趣。 但我不知道当GNN中有多种类型的标签时它如何应用。 例如,就药物而言,解毒可以...
我想知道如何提高多标签分类问题的准确度分数并降低损失。 如果你看一下 sklearn 参考资料,就会发现 Multicla 中提到了 multilabel...
即使遵循示例 3:分类的文档代码,PyKan 代码也无法工作
我完全按照 PyKan 文档上的代码进行操作,但是它一直给我这个错误: 描述:0%| | 0/20 [00:00 我完全按照 PyKan 文档上的代码进行操作,但是它一直给我这个错误: description: 0%| | 0/20 [00:00<?, ?it/s] --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) Cell In[44], line 9 6 def test_acc(): 7 return torch.mean((torch.argmax(model(dataset['test_input']), dim=1) == dataset['test_label']).float()) ----> 9 results = model.train(dataset, opt="LBFGS", steps=20, metrics=(train_acc, test_acc), loss_fn=torch.nn.CrossEntropyLoss()) File ~\anaconda3\Lib\site-packages\kan\KAN.py:898, in KAN.train(self, dataset, opt, steps, log, lamb, lamb_l1, lamb_entropy, lamb_coef, lamb_coefdiff, update_grid, grid_update_num, loss_fn, lr, stop_grid_update_step, batch, small_mag_threshold, small_reg_factor, metrics, sglr_avoid, save_fig, in_vars, out_vars, beta, save_fig_freq, img_folder, device) 895 test_id = np.random.choice(dataset['test_input'].shape[0], batch_size_test, replace=False) 897 if _ % grid_update_freq == 0 and _ < stop_grid_update_step and update_grid: --> 898 self.update_grid_from_samples(dataset['train_input'][train_id].to(device)) 900 if opt == "LBFGS": 901 optimizer.step(closure) File ~\anaconda3\Lib\site-packages\kan\KAN.py:243, in KAN.update_grid_from_samples(self, x) 220 ''' 221 update grid from samples 222 (...) 240 tensor([0.0128, 1.0064, 2.0000, 2.9937, 3.9873, 4.9809]) 241 ''' 242 for l in range(self.depth): --> 243 self.forward(x) 244 self.act_fun[l].update_grid_from_samples(self.acts[l]) File ~\anaconda3\Lib\site-packages\kan\KAN.py:311, in KAN.forward(self, x) 307 self.acts.append(x) # acts shape: (batch, width[l]) 309 for l in range(self.depth): --> 311 x_numerical, preacts, postacts_numerical, postspline = self.act_fun[l](x) 313 if self.symbolic_enabled == True: 314 x_symbolic, postacts_symbolic = self.symbolic_fun[l](x) File ~\anaconda3\Lib\site-packages\torch\nn\modules\module.py:1532, in Module._wrapped_call_impl(self, *args, **kwargs) 1530 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc] 1531 else: -> 1532 return self._call_impl(*args, **kwargs) File ~\anaconda3\Lib\site-packages\torch\nn\modules\module.py:1541, in Module._call_impl(self, *args, **kwargs) 1536 # If we don't have any hooks, we want to skip the rest of the logic in 1537 # this function, and just call forward. 1538 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1539 or _global_backward_pre_hooks or _global_backward_hooks 1540 or _global_forward_hooks or _global_forward_pre_hooks): -> 1541 return forward_call(*args, **kwargs) 1543 try: 1544 result = None File ~\anaconda3\Lib\site-packages\kan\KANLayer.py:173, in KANLayer.forward(self, x) 171 preacts = x.permute(1, 0).clone().reshape(batch, self.out_dim, self.in_dim) 172 base = self.base_fun(x).permute(1, 0) # shape (batch, size) --> 173 y = coef2curve(x_eval=x, grid=self.grid[self.weight_sharing], coef=self.coef[self.weight_sharing], k=self.k, device=self.device) # shape (size, batch) 174 y = y.permute(1, 0) # shape (batch, size) 175 postspline = y.clone().reshape(batch, self.out_dim, self.in_dim) File ~\anaconda3\Lib\site-packages\kan\spline.py:100, in coef2curve(x_eval, grid, coef, k, device) 65 ''' 66 converting B-spline coefficients to B-spline curves. Evaluate x on B-spline curves (summing up B_batch results over B-spline basis). 67 (...) 96 torch.Size([5, 100]) 97 ''' 98 # x_eval: (size, batch), grid: (size, grid), coef: (size, coef) 99 # coef: (size, coef), B_batch: (size, coef, batch), summer over coef --> 100 y_eval = torch.einsum('ij,ijk->ik', coef, B_batch(x_eval, grid, k, device=device)) 101 return y_eval File ~\anaconda3\Lib\site-packages\torch\functional.py:385, in einsum(*args) 380 return einsum(equation, *_operands) 382 if len(operands) <= 2 or not opt_einsum.enabled: 383 # the path for contracting 0 or 1 time(s) is already optimized 384 # or the user has disabled using opt_einsum --> 385 return _VF.einsum(equation, operands) # type: ignore[attr-defined] 387 path = None 388 if opt_einsum.is_available(): RuntimeError: expected scalar type Double but found Float 我该如何解决这个问题? 我将代码修改为这样: from kan import KAN import matplotlib.pyplot as plt from sklearn.datasets import make_moons import torch import numpy as np device = "cuda:0" if torch.cuda.is_available() else "cpu" dataset = {} train_input, train_label = make_moons( n_samples=1000, shuffle=True, noise=0.1, random_state=None) test_input, test_label = make_moons( n_samples=1000, shuffle=True, noise=0.1, random_state=None) dataset['train_input'] = torch.from_numpy(train_input) dataset['test_input'] = torch.from_numpy(test_input) dataset['train_label'] = torch.from_numpy(train_label) dataset['test_label'] = torch.from_numpy(test_label) dataset['train_input'] = dataset['train_input'].to(device) dataset['test_input'] = dataset['train_input'].to(device) dataset['train_label'] = dataset['train_input'].to(device) dataset['test_label'] = dataset['train_input'].to(device) X = dataset['train_input'] y = dataset['train_label'] model = KAN(width=[2, 2], grid=3, k=3, device=device).double() print(model.device) print(dataset['train_input'].device) print(dataset['test_input'].device) print(dataset['train_label'].device) print(dataset['test_label'].device) def train_acc(): return torch.mean((torch.argmax(model(dataset['train_input']), dim=1) == dataset['train_label'])) def test_acc(): return torch.mean((torch.argmax(model(dataset['test_input']), dim=1) == dataset['test_label'])) results = model.train(dataset, opt="LBFGS", steps=20, metrics=( train_acc, test_acc), loss_fn=torch.nn.CrossEntropyLoss()) 但是,我不断收到此错误,我什至尝试通过手动设置设备(如上面的代码所示)来修复它,但没有任何效果。 cuda:0 cuda:0 cuda:0 cuda:0 cuda:0 description: 0%| | 0/20 [00:00<?, ?it/s] Traceback (most recent call last): File "c:\Users\kshit\OneDrive\Documents\IRIS\KANforIRIS.py", line 45, in <module> results = model.train(dataset, opt="LBFGS", steps=20, metrics=( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py", line 898, in train self.update_grid_from_samples(dataset['train_input'][train_id].to(device)) File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py", line 243, in update_grid_from_samples self.forward(x) File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py", line 311, in forward x_numerical, preacts, postacts_numerical, postspline = self.act_fun[l](x) ^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KANLayer.py", line 170, in forward x = torch.einsum('ij,k->ikj', x, torch.ones(self.out_dim, device=self.device)).reshape(batch, self.size).permute(1, 0) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\functional.py", line 380, in einsum return _VF.einsum(equation, operands) # type: ignore[attr-defined] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! 编辑:对于最初的简短错误消息表示抱歉。为了方便起见,我现在添加了完整的错误消息,并修复了原始代码的一些小问题,因此唯一的错误是我在这篇文章中给出的错误。 我也有类似的问题。这里的仓库提供了解决方案:https://github.com/KindXiaoming/pykan/blob/master/kan/KAN.py(第761行)。您需要将“设备”传递到方法签名中。 致以诚挚的问候
我正在尝试使用 python 进行情感分析。我已经阅读了各种教程并使用了 nltk、textblob 等库。 但我想要的有点不同,我无法...
我正在训练一个多标签分类模型来检测衣服的属性。我在 Keras 中使用迁移学习,重新训练 vgg-19 模型的最后几层。 总数
我的网络中有 1000 个类,它们具有多标签输出。对于每个训练示例,正输出的数量是相同的(即 10),但它们可以分配给 1000 个类中的任何一个......
sklearn.multiclass.OneVsRestClassifier 中的回调
我想使用回调和eval_set等。 但我有一个问题: 从 sklearn.multiclass 导入 OneVsRestClassifier 导入lightgbm 详细 = 100 参数 = { “目标”:“二进制”...
我尝试使用 torchmetrics 计算多标签输出的混淆矩阵,但出现以下错误: 文件“/home/antpc/.local/lib/python3.8/site-packages/torchmetrics/metr...
我目前正在尝试使用 Pytorch dendnet121 和 4 个标签(A、B、C、D)训练图像分类模型。我有224000张图像,每张图像都以[1,0,0,1]的形式标记(标签...
我正在使用法学硕士将产品分类为特定类别。多类别。 一种方法是询问特定类别是否是/否,然后循环遍历这些类别。 另一种方式
多标签数据集上的 XGBoost 出现 ValueError:预期类别 0-8,实际为 0-9
我在多标签数据集上运行 XGBoost 模型时遇到 ValueError。错误消息为: ValueError: 预期的类标签 {0,1,2,3,4,5,6,7,8},得到 {0,1,3,4,5,6,7,8,9} 我的数据集
我使用 LinearSVC 来解决多标签分类问题。由于LinearSVC没有提供predict_proba方法,所以我决定使用CalibrateClassifierCV将决策函数缩放为[0, 1]