簡體   English   中英

在scikit-learn中使用多種功能

[英]Using multiple features with scikit-learn

我正在使用scikit-learn進行文本分類。 單個功能可以很好地解決問題,但是引入多個功能卻給我帶來了錯誤。 我認為問題是我沒有按照分類器期望的方式格式化數據。

例如,這可以正常工作:

data = np.array(df['feature1'])
classes = label_encoder.transform(np.asarray(df['target']))
X_train, X_test, Y_train, Y_test = train_test_split(data, classes)

classifier = Pipeline(...)

classifier.fit(X_train, Y_train)

但是這個:

data = np.array(df[['feature1', 'feature2']])
classes = label_encoder.transform(np.asarray(df['target']))
X_train, X_test, Y_train, Y_test = train_test_split(data, classes)

classifier = Pipeline(...)

classifier.fit(X_train, Y_train)

死於

Traceback (most recent call last):
  File "/Users/jed/Dropbox/LegalMetric/LegalMetricML/motion_classifier.py", line 157, in <module>
    classifier.fit(X_train, Y_train)
  File "/Library/Python/2.7/site-packages/sklearn/pipeline.py", line 130, in fit
    Xt, fit_params = self._pre_transform(X, y, **fit_params)
  File "/Library/Python/2.7/site-packages/sklearn/pipeline.py", line 120, in _pre_transform
    Xt = transform.fit_transform(Xt, y, **fit_params_steps[name])
  File "/Library/Python/2.7/site-packages/sklearn/feature_extraction/text.py", line 780, in fit_transform
    vocabulary, X = self._count_vocab(raw_documents, self.fixed_vocabulary)
  File "/Library/Python/2.7/site-packages/sklearn/feature_extraction/text.py", line 715, in _count_vocab
    for feature in analyze(doc):
  File "/Library/Python/2.7/site-packages/sklearn/feature_extraction/text.py", line 229, in <lambda>
    tokenize(preprocess(self.decode(doc))), stop_words)
  File "/Library/Python/2.7/site-packages/sklearn/feature_extraction/text.py", line 195, in <lambda>
    return lambda x: strip_accents(x.lower())
AttributeError: 'numpy.ndarray' object has no attribute 'lower'

在classifier.fit()調用之后的預處理階段。 我認為問題在於格式化數據的方式,但是我不知道如何正確處理數據。

feature1和feature2都是英文文本字符串,目標也是如此。 我正在使用LabelEncoder()編碼目標,這似乎工作正常。

這是print data返回的示例,以使您了解當前的格式。

[['some short english text'
  'a paragraph of english text']
 ['some more short english text'
  'a second paragraph of english text']
 ['some more short english text'
  'a third paragraph of english text']]

特定的錯誤消息使您的代碼似乎期望某處為str (以便可以調用.lower ),但它接收的是整個數組(可能是str的整個數組)。

您可以編輯問題以更好地描述數據並發布完整的追溯,而不僅僅是帶有命名錯誤的小部分嗎?

同時,您也可以嘗試

data = df[['feature1', 'feature2']].values

df['target'].values

而不是自己顯式轉換為np.ndarray

在我看來,好像正在制作一個數組,它是1x1,而“數組”中的單例元素本身就是一個ndarray

如果您的文本列具有相同的編碼器/轉換器,則將這些列合並在一起。

data = np.append(df.feature1. df.feature2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM