Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单样本预处理的精度_Python_Scikit Learn_Preprocessor_Knn - Fatal编程技术网

Python 单样本预处理的精度

Python 单样本预处理的精度,python,scikit-learn,preprocessor,knn,Python,Scikit Learn,Preprocessor,Knn,我一直在用KNN的sklearn实现来预测样本 到目前为止,我一直在用数据集的一个样本来训练分类器,然后用另一个不同的数据集样本进行测试,结果显示其准确率约为98% 然而,当试图预测单个样本时,预测到处都是,即使使用模型已经训练过的样本。我唯一的猜测是,使用preprocessing.scale预处理整个数据集与使用相同技术预处理单个样本相比,会出现问题 我读过,想知道是否有一种正确的方法来预处理单个样本 编辑:预处理代码如下所示 对于整个数据集: self.trainData = prepro

我一直在用KNN的sklearn实现来预测样本

到目前为止,我一直在用数据集的一个样本来训练分类器,然后用另一个不同的数据集样本进行测试,结果显示其准确率约为98%

然而,当试图预测单个样本时,预测到处都是,即使使用模型已经训练过的样本。我唯一的猜测是,使用preprocessing.scale预处理整个数据集与使用相同技术预处理单个样本相比,会出现问题

我读过,想知道是否有一种正确的方法来预处理单个样本

编辑:预处理代码如下所示 对于整个数据集:

self.trainData = preprocessing.scale(self.trainData)
对于单个样本,其中日志的形式与traindata中的样本相同

log=preprocessing.scale(log)
您应该使用它作为
scale
函数的包装器。此包装器存储从训练数据中学习到的平均值和标准偏差,然后使用此信息缩放其他数据

用法示例:

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\u transform()
只是先调用
fit()
然后调用
transform()
的快捷方式

fit()
方法不返回任何内容。它只是分析数据以了解平均值和标准偏差
transform()
将使用学习到的平均值和标准值缩放数据并返回新数据


您应该只对培训数据调用
fit()
fit\u transform()
,而不要对任何其他数据调用。要转换测试或新数据,请始终使用
transform()

显示代码,如何处理单个示例。你应该使用与训练中相同的量表。如果在单个样本上调用
scale()
,它将给出错误的结果。我添加了代码,如果在单个样本上使用scale()时得到错误的结果,我将如何正确预处理单个样本?太棒了,这解决了问题,并最终稍微提高了模型的准确性。