最近,我用SCRICKIT-LEARN包用Python做了一些ML方面的工作. 我想使用make_blobs()函数,所以我开始编写代码,例如:
X, y = make_blobs(n_samples=m, centers=2, n_features=2, center_box=(80, 100))
当然,这很好.
然而,在编写下一行代码时,我在Visual Studio代码中的IntelliSense开始在我前面提到的那一行上显示奇怪的错误(我只安装了用于Python的Microsoft插件).
以下是完整的错误消息:
不能将类型为"tuple[UNKNOWN|LIST[UNKNOWN]|ND数组[FLOAT64],UNKNOWN|LIST[UNKNOWN]|ND数组[ANY],ndarray[ANY,dtype[FLOAT64]]|ANY]|TUPLE[UNKNOWN|LIST[UNKNOWN]|ND数组[FLOAT64],UNKNOWN|LIST[UNKNOWN]|ND数组[ANY]"的表达式赋给目标元组 类型"tuple[UNKNOWN|LIST[UNKNOWN]|ND数组[FLOAT64],UNKNOWN|LIST[UNKNOWN]|ND数组[ANY],ndarray[ANY,dtype[FLOAT64]]|ANY]"与目标元组不兼容 发现元素大小不匹配;预期为%2,但收到%3
请注意最后一句话.Make_BLOBS()函数返回3个元素时,元素大小不匹配.什么? 我查阅了有关make_blobs()函数的SCRICKIT-LEARN文档,我读到默认的make_blobs()只返回2个元素,而不是3个元素. 当return_centers设置为True时,可以返回3个元素,而我没有将其设置为True,如您在我的示例中所见.
好的,也许我会试着期待这3个元素,所以我修改了那行
X, y, _ = make_blobs(n_samples=m, centers=2, n_features=2, center_box=(80, 100))
那好吧...这是错误消息...
不能将类型为"tuple[UNKNOWN|LIST[UNKNOWN]|ND数组[FLOAT64],UNKNOWN|LIST[UNKNOWN]|ND数组[ANY],ndarray[ANY,dtype[FLOAT64]]|ANY]|TUPLE[UNKNOWN|LIST[UNKNOWN]|ND数组[FLOAT64],UNKNOWN|LIST[UNKNOWN]|ND数组[ANY]"的表达式赋给目标元组 类型"tuple[UNKNOWN|LIST[UNKNOWN]|ND数组[FLOAT64],UNKNOWN|LIST[UNKNOWN]|ND数组[ANY]]"与目标元组不兼容 %1个元素大小不匹配;预期为%3,但收到%2
现在它返回2个元素?!
我接下来try 的是:
- 重新安装SCRIPKIT-学习包.同样的效果
- 正在清除包含所有it文件的Python.同样的效果
- 正在重新安装适用于vscode的Microsoft Python扩展.同样的效果
显然这是某种智能感知问题,因为运行代码运行得很好,但是是什么导致了这种行为呢?
我使用的是3.10.9和3.11.1.
在Windows 10 22H2 19045.2364上运行.
VSCode为最新版本.
为了完整,SCRICKIT-学习版本是1.2.0