Jib*_*hew 3 machine-learning normalization svm
对于不同规模的输入数据,我知道用于训练分类器的值必须进行标准化才能正确分类(SVM)。
那么预测的输入向量是否也需要归一化呢?
我遇到的情况是训练数据被标准化和序列化并保存在数据库中,当必须进行预测时,序列化数据被反序列化以获得标准化的 numpy 数组,然后将 numpy 数组适合分类器和将用于预测的输入向量应用于预测。那么这个输入向量是否也需要归一化呢?如果是这样,该怎么做,因为在预测时我没有实际的输入训练数据来标准化?
另外,我沿着 axis=0 ,即沿着列进行标准化。
我的规范化代码是:
preprocessing.normalize(data, norm='l2',axis=0)
Run Code Online (Sandbox Code Playgroud)
有没有办法序列化 preprocessing.normalize
在 SVM 中,出于多种原因推荐使用缩放器。
当您将特征放在相同的比例中时,您必须删除平均值并除以标准差。
xi - mi
xi -> ------------
sigmai
Run Code Online (Sandbox Code Playgroud)
您必须存储训练集中每个特征的平均值和标准差,以便在未来的数据中使用相同的操作。
在 python 中,你有函数可以为你做到这一点:
http://scikit-learn.org/stable/modules/ generated/sklearn.preprocessing.StandardScaler.html
要获得均值和标准差:
scaler = preprocessing.StandardScaler().fit(X)
Run Code Online (Sandbox Code Playgroud)
然后对训练集进行归一化(X 是一个矩阵,其中每行都是数据,每列都是特征):
X = scaler.transform(X)
Run Code Online (Sandbox Code Playgroud)
训练结束后,您必须在分类之前对未来数据进行标准化:
newData = scaler.transform(newData)
Run Code Online (Sandbox Code Playgroud)