【发布时间】:2020-11-05 05:33:29
【问题描述】:
我正在使用经过训练的 SVM 模型来预测新数据样本的类别标签。数据的处理方式与训练数据完全相同(相同的特征)。尝试预测时出现 AttributeError:
data_to_predict = feature_row
prediction = trained_model.predict(data_to_predict)
data_to_predict 是一个单行的 pandas DataFrame。我收到此错误:
AttributeError: 'SVC' object has no attribute 'probA_'
我认为(也许是错误的)问题在于数据的形式,因为当我打印 feature_row 时它看起来是正确的。到目前为止,这是我尝试过的:
- 确保使用
probability=True训练模型 - 尝试将数据重塑为
[feature_row],错误更改为KeyError: 0 - 尝试将数据更改为数组
np.array(feature_row),返回原始错误 - 尝试重塑数组
np.array(feature_row).reshape((-1, 1)),错误为ValueError: Number of features of the input must be equal to or greater than that of the fitted transformer. Transformer n_features is 31 and input n_features is 1. - 尝试以相反的方式重塑
np.array(feature_row).reshape((1, -1)),回到原来的错误 - 终于,尝试了
[np.array(feature_row).reshape(-1, 1)],得到了ValueError: Found array with dim 3. Estimator expected <= 2.
额外信息:我不确定它是否对解决此问题有任何影响,但该模型涉及:
- 一列上带有 TfidfVectorizer 的 ColumnTransformer(带有
remainder='passthrough') - 后跟 SVC 步骤
SVC(probability=True, class_weight='balanced') - scikit-learn 版本 0.22.1
编辑:以防以后有人遇到此线程。在帮助下 Victor Luu,我们设法将问题与泡菜文件本身隔离开来。经过进一步探索,我发现我正在两个不同的环境中训练和测试模型,这些环境的 scikit-learn 版本(0.23.1 和 0.22.1)略有不同,一旦我确定它们匹配,错误就消失了。
【问题讨论】:
-
您好,您的模型安装了吗?如果还没有,需要先安装它
-
我已经装好了,它已经被训练过了,我正在从一个泡菜文件中加载它
标签: python scikit-learn svm predict