【发布时间】:2021-09-06 16:43:07
【问题描述】:
我在训练 SVM+HOG 对象检测器时遇到了一个问题,这就是我所做的。
我将所有功能都放在了一个名为 features 的列表中并使用了
X_scaler = StandardScaler().fit(features)
scaled_X = X_scaler.transform(features)
rand_state = np.random.randint(0, 100)
X_train, X_test, y_train, y_test = train_test_split(np.array(features), labels, test_size=0.3, random_state=rand_state)
根据sklearn.preprocessing.StandardScaler,StandardScaler() 中的这种变换是基于所有训练样本的均值和标准差。那么问题来了,如果我只想在 1 个新看到的样本上测试我训练的 SVM,我该如何应用StandardScaler()?因为我无法仅从 1 个样本中计算平均值和标准差。
据我了解,如果我想在新数据(不是x_test)上测试 SVM,我需要从训练中遵循相同的程序。因此,我尝试从多个新看到的样本中提取 HOG 特征并附加到另一个名为 test_feature 的列表中,然后
X_scaler = StandardScaler().fit(test_feature)
scaled_X = X_scaler.transform(test_feature_feature)
似乎工作正常,SVM产生正确的输出,但是当len(test_feature) == 1,无论我用StandardScaler()转换test_feature还是直接使用y_pred = clf.predict(np.array(test_feature)),输出都是垃圾。
有没有cmets?
【问题讨论】:
标签: python scikit-learn svm