gpt4 book ai didi

python - 使用 GridSearchCV scikit-learn 进行管道中的 KMeans

转载 作者:行者123 更新时间:2023-12-03 17:34:15 25 4
gpt4 key购买 nike

我想对我的文本数据执行聚类。为了找到最佳的文本预处理参数,我制作了管道并将其放入 GridSearchCV:

text_clf = Pipeline([('vect1', CountVectorizer(analyzer = "word"),
('myfun', MyLemmanization(lemmatize=True,
leave_other_words = True)),
('vect2', CountVectorizer(analyzer = "word",
max_df=0.95, min_df=2,
max_features=2000)),
('tfidf', TfidfTransformer()),
('clust', KMeans(n_clusters=10, init='k-means++',
max_iter=100, n_init=1, verbose=1))])
parameters = {'myfun__lemmatize': (True, False),
'myfun__leave_other_words': (True, False)}
gs_clf = GridSearchCV(text_clf, parameters, n_jobs=1, scoring=score)
gs_clf = gs_clf.fit(text_data)
哪里 score
score = make_scorer(my_f1, greater_is_better=True)
my_f1是形式:
def my_f1(labels_true, labels_pred):
# fancy stuff goes here
并且是 specially为聚类而设计
所以我的问题是:如何使它起作用?如何通过 labels_pred , 当作为一个自然的人时,我只能做
gs_clf.fit(data)
而在分类中有可能:
gs_clf.fit(data, labels_true)
我知道我可以编写我的自定义函数,就像我对 MyLemmanization 所做的那样:
class MyLemmanization(BaseEstimator, TransformerMixin):

def __init__(self, lemmatize=True, leave_other_words=True):
#some code here

def do_something_to(self, X):
# some code here
return articles

def transform(self, X, y=None):
return self.do_something_to(X) # where the actual feature extraction happens

def fit(self, X, y=None):
return self # generally does nothing
但是如何以及必须对 KMeans 或其他聚类算法做什么?

最佳答案

您可以创建自定义 K-means,在其中使用标记数据构建初始质心,然后让 K-means 发挥其魔力。
您可能还想尝试 k-NN ,即使它是一种不同的方法。
更重要的是,你有一个概念上的问题。你说你使用聚类的原因之一是因为它可能会发现以前未知的主题,但你也说你想通过与已知标签进行比较来评估性能。但是,您不能同时拥有两者...

关于python - 使用 GridSearchCV scikit-learn 进行管道中的 KMeans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488313/

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