ValueError:不支持连续格式(ValueError: continuous format is not supported)

在进行positive-negative二分类情感分析时遇到`ValueError: continuous format is not supported`的问题。尝试将任务改为回归任务虽能运行,但不符原本的二分类目标。通过查看sklearn文档,发现输入应为二进制标签数组。通过将y_prob和y_true中的数据强转为int类型成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ValueError:不支持连续格式(ValueError: continuous format is not supported)

运行情感分析的代码时报错,我做的是一个positive-negative二分类问题。
在这里插入图片描述
网络上的解决方法(下图)是改为回归任务,虽然改了后能运行,但感觉怪怪的,因为我的任务目标是二分类。
在这里插入图片描述

对于本二分类问题不使用,又看到了sklearn文档说 “第一个参数必须是二进制标签数组,但是你传递某种float数组作为第一个参数”

于是在y_prob和y_true里加了强制类型转换int(),如下

		y_prob.append(int(polarities[w]))
		y_true.append(int(1 + lexicon[w] / 2))

成功运行
在这里插入图片描述
参考:https://blog.csdn.net/zhou_438/article/details/100052607
https://www.656463.com/wenda/ValueErrorbuzhichilianxugeshi_229

果然刚才那个代码““best_val_acc = 0.0for epoch in range(training_epochs): model.train() train_loss = 0.0 train_mae = 0.0 with tqdm(total=len(train_loader), desc=f’Epoch {epoch + 1}/{training_epochs}', unit=‘batch’, position=0, leave=True) as pbar: for X_batch, Y_batch in train_loader: X_batch, Y_batch = X_batch.to(device), Y_batch.to(device) optimizer.zero_grad() output = model(X_batch) loss = criterion(output, Y_batch) #训练过程 loss.backward() torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0) optimizer.step() output_np = output.detach().cpu().numpy() Y_batch_np = Y_batch.detach().cpu().numpy() output_np_flat = output_np.reshape(output_np.shape[0], -1) Y_batch_np_flat = Y_batch_np.reshape(Y_batch_np.shape[0], -1) mae = mean_absolute_error(Y_batch_np_flat, output_np_flat) train_loss += loss.item() train_mae += mae.item() pbar.set_postfix({'loss': f'{loss.item():.4f}', 'mae': f'{mae.item():.4f}'}) pbar.update(1) train_loss /= len(train_loader) train_mae /= len(train_loader) history['train_loss'].append(train_loss) history['train_mae'].append(train_mae) model.eval() val_loss = 0.0 val_mae = 0.0 val_acc = 0.0 with torch.no_grad(): for X_batch, Y_batch in valid_loader: X_batch, Y_batch = X_batch.to(device), Y_batch.to(device) output = model(X_batch) loss = criterion(output, Y_batch) output_np = output.detach().cpu().numpy() Y_batch_np = Y_batch.detach().cpu().numpy() output_np_flat = output_np.reshape(output_np.shape[0], -1) Y_batch_np_flat = Y_batch_np.reshape(Y_batch_np.shape[0], -1) mae = mean_absolute_error(Y_batch_np_flat, output_np_flat) val_loss += loss.item() val_mae += mae.item() acc = precision_score(Y_batch_np_flat, output_np_flat) val_acc += acc.item() val_loss /= len(valid_loader) val_mae /= len(valid_loader) val_acc /= len(valid_loader) history['val_loss'].append(val_loss) history['val_mae'].append(val_mae) print( f'Epoch {epoch + 1}/{training_epochs}, Train Loss: {train_loss:.4f}, Validation Loss: {val_loss:.4f}, Validation MAE: {val_mae:.4f}') if val_acc > best_val_acc: best_val_acc = val_acc torch.save(model.state_dict(), file_weights) print(f'Best model saved at epoch {epoch + 1} with validation loss {val_loss:.4f}')””,出现这个问题"Traceback (most recent call last): File "/home/featurize/work/trainkanmuacc.py", line 205, in <module> acc = precision_score(Y_batch_np_flat, output_np_flat) File "/environment/miniconda3/lib/python3.10/site-packages/sklearn/utils/_param_validation.py", line 214, in wrapper return func(*args, **kwargs) File "/environment/miniconda3/lib/python3.10/site-packages/sklearn/metrics/_classification.py", line 2131, in precision_score p, _, _, _ = precision_recall_fscore_support( File "/environment/miniconda3/lib/python3.10/site-packages/sklearn/utils/_param_validation.py", line 187, in wrapper return func(*args, **kwargs) File "/environment/miniconda3/lib/python3.10/site-packages/sklearn/metrics/_classification.py", line 1724, in precision_recall_fscore_support labels = _check_set_wise_labels(y_true, y_pred, average, labels, pos_label) File "/environment/miniconda3/lib/python3.10/site-packages/sklearn/metrics/_classification.py", line 1501, in _check_set_wise_labels y_type, y_true, y_pred = _check_targets(y_true, y_pred) File "/environment/miniconda3/lib/python3.10/site-packages/sklearn/metrics/_classification.py", line 104, in _check_targets raise ValueError("{0} is not supported".format(y_type)) ValueError: continuous-multioutput is not supported"
最新发布
03-09
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值