Создание функции объектов для дальнейшей классификации в python

#python #scikit-learn #feature-extraction

#python #scikit-learn #извлечение объектов

Вопрос:

Я прочитал описание, как применить регрессию случайного леса здесь. В этом примере авторы используют следующий код для создания объектов:

 from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(analyzer = "word",max_features = 5000)
train_data_features = vectorizer.fit_transform(clean_train_reviews)
train_data_features = train_data_features.toarray()
  

Я подумываю о том, чтобы объединить несколько возможностей в качестве функций и включать и выключать их. И я не знаю, как это сделать.
На данный момент у меня есть то, что я определяю класс, в котором я смогу включать и выключать функции и смотреть, приносит ли это что-то (например, все униграммы и 20 наиболее частых униграмм, тогда это может быть 10 наиболее частых прилагательных, tf-idf). Но на данный момент я не понимаю, как объединить их вместе.
Код выглядит следующим образом, и в функциональной части я теряюсь (та функция, которая у меня есть, могла бы повторить то, что они делают в руководстве, но, похоже, это не очень помогает в том, как я это делаю):

 class FeatureGen: #for example, feat = FeatureGen(unigrams = False) creates feature set without the turned off feature
def __init__(self, unigrams = True, unigrams_freq = True)
self.unigrams = unigrams
self.unigrams_freq = unigrams_freq

def get_features(self, input): 
    vectorizer = CountVectorizer(analyzer = "word",max_features = 5000)
    tokens = input["token"]
    if self.unigrams:
        train_data_features = vectorizer.fit_transform(tokens)
    return train_data_features
  

Что мне следует сделать, чтобы добавить еще одну возможность создания функций? Like содержит 10 наиболее часто встречающихся слов.

           if self.unigrams
               train_data_features = vectorizer.fit_transform(tokens)  
          if self.unigrams_freq:
                #something else
    return features #and this should be a combination somehow
  

Ответ №1:

Похоже, вам нужен np.hstack

Однако вам нужно, чтобы в каждом массиве объектов было по одной строке на учебный пример.

Комментарии:

1. Большое спасибо, я начал искать в этом направлении, и, похоже, это работает с numpy.column_stack