You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NearMiss实例化传参报错:__init__()仅接受1个位置参数却传入2个

解决imblearn NearMiss实例化时传入0.8出现TypeError的问题

报错原因

直接用NearMiss(0.8)实例化触发TypeError,是因为NearMiss的构造函数不支持直接传位置参数作为采样比例。它的第一个位置参数是version(指定NearMiss版本,必须为整数,默认1),你传入的0.8会被误当作version参数,而构造函数没有额外位置参数定义,因此抛出参数数量不匹配的错误。

解决方法

要设置采样比例,必须显式指定sampling_strategy关键字参数,这是imblearn中控制采样比例的标准参数:

from collections import Counter
from imblearn.under_sampling import NearMiss

# 显式指定采样比例参数
ns = NearMiss(sampling_strategy=0.8)
X_train_ns, y_train_ns = ns.fit_resample(X_train, y_train)
print("The number of classes before fit {}".format(Counter(y_train)))
print("The number of classes after fit {}".format(Counter(y_train_ns)))

关于sampling_strategy的说明

  • 传入浮点数时,代表少数类样本数与多数类样本数的目标比例。比如你原数据中少数类(1类)有348个,设置sampling_strategy=0.8后,多数类(0类)会被采样到 348 / 0.8 = 435 个。
  • 默认值为'auto',即把多数类样本数采样到和少数类一致,这也是你不传参数时得到Counter({0: 348, 1: 348})的原因。
  • 也可以传入字典指定每个类的目标数量,比如sampling_strategy={0: 1000, 1: 348},直接定义多数类的保留数量。

内容的提问来源于stack exchange,提问作者Rohit Bale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:55:29