gpt4 book ai didi

python - 使用 sklearn 使用卡方核进行多标签预测

转载 作者:行者123 更新时间:2023-11-30 09:12:38 27 4
gpt4 key购买 nike

我正在尝试使用预先计算的卡方内核来获得 SVM 的预测。但是,我在尝试运行 clf.predict() 时遇到问题。

min_max_scaler = preprocessing.MinMaxScaler()
X_train_scaled = min_max_scaler.fit_transform(features_train)
X_test_scaled = min_max_scaler.transform(features_test)

K = chi2_kernel(X_train_scaled)
svm = SVC(kernel='precomputed', cache_size=1000).fit(K, labels_train)
y_pred_chi2 = svm.predict(X_test_scaled)

我收到的错误如下:

ValueError: bad input shape (4627L, 20L)

我猜测这个问题是由于多标签造成的,因此我通过执行以下操作仅针对 1 个类别训练分类器:

svm = SVC(kernel='precomputed', cache_size=1000).fit(K, labels_train[:, 0])

但是,当尝试运行 clf.predict(X_test_scaled) 时,我收到错误:

ValueError: X.shape[1] = 44604 should be equal to 4627, the number of samples at training time

为什么测试样本必须与训练样本数量相同?

以下是相关矩阵的形状(特征有 44604 个维度,有 20 个类别):

X_train_scaled.shape    : (4627L, 44604L)
X_test_scaled.shape : (4637L, 44604L)
K.shape : (4627L, 4627L)
labels_train.shape : (4627L, 20L)

顺便说一句,这些矩阵的形状大小旁边有 L 是否正常?

最佳答案

您需要为预测函数提供测试数据和训练数据之间的核。最简单的方法是为内核参数kernel=chi2_kernel 提供一个可调用函数。使用

K_test = chi2_kernel(X_test_scaled)

不会起作用。它需要

K_test = chi2_kernel(X_test_scaled, X_train_scaled)

关于python - 使用 sklearn 使用卡方核进行多标签预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29025334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com