gpt4 book ai didi

pandas - 使用 sklearn 或 pandas 进行一次热编码后,如何在混合数据集(数值 + 分类)上应用 KNN

转载 作者:行者123 更新时间:2023-12-04 14:37:58 25 4
gpt4 key购买 nike

我正在尝试根据对象的各种特征(例如:类别、标签、作者、标题、 View 、共享等)创建推荐器。正如您所看到的,这些功能是混合类型的,而且我没有任何特定于用户的数据。在显示对象之一的详细信息后,我想再显示 3 个相似的对象。我正在尝试将 kNN 与 sklearn 一起使用,并发现单热编码在这种情况下很有用。但我不知道如何将它们与 KNN 一起应用。欢迎任何帮助,即使使用完全不同的库或方法。我是 ML 的新手。

最佳答案

查看 Pipeline接口(interface)和 this很好的介绍。管道是一种通过模型和超参数选择组织预处理的干净方式。

我的基本设置如下所示:

from sklearn.pipeline import Pipeline, FeatureUnion, make_pipeline
from sklearn.preprocessing import OneHotEncoder
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.neighbors import KNeighborsClassifier

class Columns(BaseEstimator, TransformerMixin):
def __init__(self, names=None):
self.names = names

def fit(self, X, y=None, **fit_params):
return self

def transform(self, X):
return X[self.names]

numeric = [list of numeric column names]
categorical = [list of categorical column names]

pipe = Pipeline([
("features", FeatureUnion([
('numeric', make_pipeline(Columns(names=numeric),StandardScaler())),
('categorical', make_pipeline(Columns(names=categorical),OneHotEncoder(sparse=False)))
])),
('model', KNeighborsClassifier())
])

这允许您简单地尝试不同的分类器、特征转换器(例如 MinMaxScaler() 而不是 StandardScaler()),即使在带有分类器超参数的大网格搜索中也是如此。

关于pandas - 使用 sklearn 或 pandas 进行一次热编码后,如何在混合数据集(数值 + 分类)上应用 KNN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com