我尝试将 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.
同时,如果你的数值变量有很大的方差,那就去找RobustScaler或 StandardScaler .
您不必缩放一个热编码的特征。
对于 BoW,保持数据的稀疏性很重要。如果您应用 StandardScaler,您将失去稀疏性。您绝对必须选择 MinMaxScaler。 另一种选择是选择 TfidfVectorizer ,它默认执行 l2 规范化。
关于python - 我应该为 knn 规范化或标准化我的数据集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073423/