das*_*esy 5 python svm scikit-learn
关于机器学习的文献强烈建议SVM数据的标准化(scikit-learn中的预处理数据).正如之前回答,同样StandardScalar应适用于训练和测试数据.
estimators = [('normalize', StandardScaler()), ('svm', SVC(class_weight = 'auto'))]
clf = Pipeline(estimators)
# Training
clf.fit(X_train, y)
# Classification
clf.predict(X_test)
Run Code Online (Sandbox Code Playgroud)
执行的特征缩放StandardScaler是在不参考目标类的情况下执行的.它只考虑X特征矩阵.它计算所有样本中每个特征的平均值和标准差,而不管每个样本的目标类别.
管道的每个组件独立运行:只在它们之间传递数据.让我们扩展管道clf.fit(X_train, y).它大致做了以下事情:
X_train_scaled = clf.named_steps['normalize'].fit_transform(X_train, y)
clf.named_steps['svm'].fit(X_train_scaled, y)
Run Code Online (Sandbox Code Playgroud)
第一个缩放步骤实际上忽略了y它的传递,但计算每个特征的平均值和标准差,X_train并将它们存储在其mean_和std_属性(fit组件)中.它还集中X_train并返回它(transform组件).下一步学习SVM模型,并执行一对一休息所需的操作.
现在是管道的分类视角.clf.predict(X_test)扩展为:
X_test_scaled = clf.named_steps['normalize'].transform(X_test)
y_pred = clf.named_steps['svm'].predict(X_test_scaled)
Run Code Online (Sandbox Code Playgroud)
回来y_pred.在第一行中,它使用存储mean_并将std_转换应用于X_test使用从训练数据中学习的参数.
是的,缩放算法并不复杂.它只是减去平均值并除以标准.但是StandardScalar:
fit或fit_transform以后transform操作的参数(如上所述)inverse_transform方法扭转变换| 归档时间: |
|
| 查看次数: |
4053 次 |
| 最近记录: |