Решено SVM: AttributeError: объект numpy .ndarray не имеет атрибута 'lower', когда я пытаюсь установить TFIDF с LinearSVC - PullRequest
0 голосов
/ 12 февраля 2020

Пожалуйста, помогите мне. Я получил ошибку AttributeError: 'numpy .ndarray' объект не имеет атрибута 'lower' , когда я пытаюсь поставить код конвейера.

Это код:

    from sklearn.model_selection import train_test_split
    X = X.replace([np.inf, -np.inf], np.nan)
    y = y.replace([np.inf, -np.inf], np.nan)
    X = X.dropna()
    y = y.dropna()
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

    from sklearn.feature_extraction.text import CountVectorizer
    count_vect = CountVectorizer()
    X_train_counts = count_vect.fit_transform(X_train)

    from sklearn.feature_extraction.text import TfidfTransformer
    tfidf_transformer = TfidfTransformer()
    X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

    from sklearn.feature_extraction.text import TfidfVectorizer
    vectorizer = TfidfVectorizer()
    X_train_tfidf = vectorizer.fit_transform(X_train)

    from sklearn.svm import LinearSVC
    clf = LinearSVC()
    clf.fit(X_train_tfidf,y_train)

    from sklearn.pipeline import Pipeline
    text_clf = Pipeline([('tfidf',TfidfVectorizer()),('clf',LinearSVC())])
    text_clf.fit(X_train,y_train)

    if request.method == 'POST':
        message = request.form['message']
        data = [message]
        vect = vectorizer.transform(data).toarray()
        my_prediction = text_clf.predict(vect)

    return render_template('result.html',prediction = my_prediction)

решено, это новый код для решения проблемы.

   from sklearn.feature_extraction.text import TfidfVectorizer
   from sklearn.svm import LinearSVC
   from sklearn.pipeline import Pipeline
        text_clf = Pipeline([('tfidf',TfidfVectorizer()),('clf',LinearSVC())])

Я удаляю CountVectorizer и TfidfTransformer только это.

...