Я делаю текстовый классификатор на данные, которые у меня есть.На основании некоторых наблюдений мне нужно определить целевую переменную.Я начал с набора слов и подхода tf / idf.
Я сделал классификатор с функцией «one», но когда я пытаюсь включить больше «функций», скажем 7, чтобы предсказать метку, Count Vectorizerвыдает ошибку для fit_transform.Ниже приведен код
from sklearn import preprocessing
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.linear_model import LogisticRegression
bow = CountVectorizer()
# working fine for one feature
#observation = df_all_null_removed['Observation'].values
# selecting feature set of 7 variables
observation = df_all_null_removed[features].values
train_obs, test_obs,y_train, y_test =train_test_split(observation,
df_all_null_removed['HazardType'],
test_size=0.12,
random_state=42)
bow_matrix = bow.fit_transform(observation) # throws error - screen shot attached.
Я думаю, что это потому, что «наблюдение» - это двумерный массив фигурных фигур [8150,7], и нам нужно преобразовать его в 8150 строк массива из 1 столбца.
AttributeError Traceback (most recent call last)
<ipython-input-140-d75b27bd1080> in <module>()
----> 1 bow_matrix = bow.fit_transform(observation)
2 print("The vocabulary of the bow",len(bow.vocabulary_))
~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in fit_transform(self, raw_documents, y)
867
868 vocabulary, X = self._count_vocab(raw_documents,
--> 869 self.fixed_vocabulary_)
870
871 if self.binary:
~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in _count_vocab(self, raw_documents, fixed_vocab)
790 for doc in raw_documents:
791 feature_counter = {}
--> 792 for feature in analyze(doc):
793 try:
794 feature_idx = vocabulary[feature]
~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in <lambda>(doc)
264
265 return lambda doc: self._word_ngrams(
--> 266 tokenize(preprocess(self.decode(doc))), stop_words)
267
268 else:
~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in <lambda>(x)
230
231 if self.lowercase:
--> 232 return lambda x: strip_accents(x.lower())
233 else:
234 return strip_accents
AttributeError: 'numpy.ndarray' object has no attribute 'lower'