执行 TFidf 和返回数字列表的自定义类的功能联合的正确方法



我正在尝试在由句子组成的训练数据上执行tfidf的特征联合。除此之外,我希望对句子进行一些计算,以获得将返回数值的某些特征。

在 OtherFeatures 类中,我需要了解如何定义拟合和转换函数,以便我可以对数据进行训练并相应地对测试数据进行聚类。

class OtherFeatures(BaseEstimator, TransformerMixin):       
    def OtherFeatures(self,input):
        ret = []
        for i in input:
           ret.append( Do Something )
        return ret
    def fit(self, X_input=None, y=None):
        self.other_features_list = self.otherFeatures(X_input)
        return self
    def transform(self, X_input=None):
        X_output = self.otherFeatures(X_input)
        return X_output

feature_union = FeatureUnion([('TfIdf', TfidfVectorizer(min_df=1, max_df=0.9, ngram_range=(1, 4), strip_accents='unicode', norm='l2')),('OtherFeatures', OtherFeatures())])
km=KMeans(n_clusters=5, n_init=5,init='k-means++') 
feature_pipeline = Pipeline([('feature_union', feature_union),("km",km)]) 
km=feature_pipeline.fit(X1) 

管道调用特征联合,然后调用 kmeans 聚类。

当我想到这一点时,行 feature_pipeline.fit(X1( 首先调用feature_union的拟合函数,然后调用 kmeans 的拟合函数。

我只是在 fit 函数中返回 OtherFeatures 类对象,所以应该在转换函数中做什么才能从 fit 函数中使用,因为在这种情况下我有一个数字列表。

另外什么时候应该使用转换函数?

我可以了解如何使用功能联合吗?

任何帮助,不胜感激。

找到一种方法,即将模型传递给特征联合类的构造函数,然后将其拟合到适合函数中,并在转换类中为传递的模型应用变换。还有其他解决方案吗?

class OtherFeatures(BaseEstimator, TransformerMixin):       
    def __init__(self,model):
        self.model = model
    def other_features(self,input):
        ret = []
        for i in input:
           ret.append( Do Something )
        return ret
    def fit(self, X_input=None, y=None):
        self.other_features_list = self.other_features(X_input)
        self.model.fit(self.other_features_list,y)
        return self
    def transform(self, X_input=None):
        X_output = self.otherFeatures(X_input)
        X_output = self.model.transform(X_output)
        return X_output

km=KMeans(n_clusters=5, n_init=5,init='k-means++') 
km_inside=KMeans(n_clusters=5, n_init=5,init='k-means++') 
feature_union = FeatureUnion([('TfIdf', TfidfVectorizer(min_df=1, max_df=0.9, ngram_range=(1, 4), strip_accents='unicode', norm='l2')),('OtherFeatures', OtherFeatures(km_inside))])
feature_pipeline = Pipeline([('feature_union', feature_union),("km",km)]) 
km=feature_pipeline.fit(X1) 

相关内容

  • 没有找到相关文章

最新更新