预处理单样本准确度
Accuracy of preprocessing single sample
我一直致力于使用 KNN 的 sklearn 实现来预测样本。
到目前为止,我一直在使用我的数据集样本训练我的分类器,然后使用另一个不同的数据集样本对其进行测试,结果显示准确率约为 98%。
但是,当尝试预测单个样本时,即使使用模型已经过训练的样本,预测也会到处都是。我唯一的猜测是,使用 preprocessing.scale 预处理整个数据集与使用相同技术预处理单个样本时存在问题。
我已阅读 并想知道是否有正确的方法来预处理单个样本。
编辑:预处理代码如下所示
对于整个数据集:
self.trainData = preprocessing.scale(self.trainData)
对于单个样本,其中log与traindata中的样本具有相同的形式。
log = preprocessing.scale(log)
你应该使用 StandardScaler
which is a wrapper over the scale
function as described here。此包装器存储从训练数据中学习的均值和标准差,然后使用此信息来缩放其他数据。
用法示例:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
trainData = scaler.fit_transform(trainData)
# I have used reshape because of single sample. In other cases, its not needed
log = scaler.transform(np.reshape(log, (1,-1)))
fit_transform()
只是先调用fit()
再调用transform()
的快捷方式。
fit()
方法没有 return 任何东西。它只是分析数据以了解平均值和 standard_deviation。 transform()
将使用学习到的均值和标准差来缩放数据和 return 新数据。
您应该只对训练数据调用 fit()
或 fit_transform()
,而不要对任何其他数据调用。要转换测试或新数据,请始终使用 transform()
。
我一直致力于使用 KNN 的 sklearn 实现来预测样本。
到目前为止,我一直在使用我的数据集样本训练我的分类器,然后使用另一个不同的数据集样本对其进行测试,结果显示准确率约为 98%。
但是,当尝试预测单个样本时,即使使用模型已经过训练的样本,预测也会到处都是。我唯一的猜测是,使用 preprocessing.scale 预处理整个数据集与使用相同技术预处理单个样本时存在问题。
我已阅读
编辑:预处理代码如下所示 对于整个数据集:
self.trainData = preprocessing.scale(self.trainData)
对于单个样本,其中log与traindata中的样本具有相同的形式。
log = preprocessing.scale(log)
你应该使用 StandardScaler
which is a wrapper over the scale
function as described here。此包装器存储从训练数据中学习的均值和标准差,然后使用此信息来缩放其他数据。
用法示例:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
trainData = scaler.fit_transform(trainData)
# I have used reshape because of single sample. In other cases, its not needed
log = scaler.transform(np.reshape(log, (1,-1)))
fit_transform()
只是先调用fit()
再调用transform()
的快捷方式。
fit()
方法没有 return 任何东西。它只是分析数据以了解平均值和 standard_deviation。 transform()
将使用学习到的均值和标准差来缩放数据和 return 新数据。
您应该只对训练数据调用 fit()
或 fit_transform()
,而不要对任何其他数据调用。要转换测试或新数据,请始终使用 transform()
。