python - 我应该为 knn 规范化或标准化我的数据集吗?

标签 python python-3.x machine-learning scikit-learn knn

我尝试将 knn 用于分类任务,我的数据集包含热编码的分类特征价格等数字特征以及 BoW(CountVectorizer) 我的文本列的向量。

我知道 knn 会受到缩放的影响。所以我很困惑在这里使用什么?

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import normalize

最佳答案

我的建议是选择 MinMaxScaler

主要原因之一是您的价格等特征不能有负值,而且正如您提到的,它可能是稀疏的。

来自文档:

The motivation to use this scaling include robustness to very small standard deviations of features and preserving zero entries in sparse data.

同时,如果你的数值变量有很大的方差,那就去找RobustScalerStandardScaler .

您不必缩放一个热编码的特征。

对于 BoW,保持数据的稀疏性很重要。如果您应用 StandardScaler,您将失去稀疏性。您绝对必须选择 MinMaxScaler。 另一种选择是选择 TfidfVectorizer ,它默认执行 l2 规范化。

关于python - 我应该为 knn 规范化或标准化我的数据集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073423/

相关文章:

用于即时键迭代的 python 列表与元组

python - Spark python脚本不写入hbase

python - 如何在显示文本的同时在 Python 2.6.6 中播放音频?

python - 加载 TensorFlow 嵌入模型

machine-learning - 使用 Common Lisp 进行新的机器学习项目

Python3 : what are faster, 嵌套函数调用或 if 语句(try/excepts 非常快)

python - 更改 Python 中的实例变量也会更改原始列表

python - 将二维列表中的第一次出现添加到另一个列表 (Python 3.4.2)

python - re.sub() 文档误解

python - 决策树太大 Scikit Learn