sklearn.manifold.TSNE运行报multiply ufunc类型匹配错误如何解决?
sklearn 1.0.1运行TSNE示例报UFuncTypeError的修复方案
问题根因
你当前使用的scikit-learn 1.0.1版本不支持TSNE类的learning_rate参数传入'auto'字符串值。该参数的'auto'可选值是在scikit-learn 1.2版本才正式新增的,1.2之前的版本中learning_rate仅接受数值类型输入。你传入字符串后,代码内部执行乘法运算时就会触发字符串类型相乘的类型错误,和你收到的报错信息完全匹配。
修复方案
你可以选择以下任意一种方案解决问题:
- 方案1:升级scikit-learn到1.2及以上版本
执行升级命令即可,升级完成后原示例代码可直接运行:pip install -U scikit-learn>=1.2 - 方案2:不升级版本,直接修改代码参数
将learning_rate参数替换为数值类型即可,官方默认推荐值为200,修改后的代码如下:import numpy as np from sklearn.manifold import TSNE X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]) X_embedded = TSNE(n_components=2, learning_rate=200, init='random').fit_transform(X) X_embedded.shape
内容的提问来源于stack exchange,提问作者wen
相关产品推荐
相关产品推荐

