- Проверьте, есть ли в ваших данных пустые значения, используя
your_data.isnull().any()
. Если у вас есть нули, используйте your_data = your_data.dropna()
. Проверьте, содержит ли ваши данные inf, используя np.isfinite(your_data)
. Если есть значения inf, вы можете использовать your_data.replace([np.inf, -np.inf], np.nan)
, а затем your_data = your_data.dropna()
, чтобы удалить их.
Измените your_data
на любое имя используемых вами фреймов данных, например, X
, y
или X_train_tfidf
Также отметьте этот ответ , а ответ, отмеченный как возможный, дублируется в комментариях к сообщению.
РЕДАКТИРОВАТЬ: Добавление образец по запросу. Делать это на X и Y как наиболее очевидная вещь.
from sklearn.model_selection import train_test_split
# Add these lines
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)
if request.method == 'POST':
message = request.form['message']
data = [message]
vect = vectorizer.transform(data).toarray()
my_prediction = clf.predict(vect)
return render_template('result.html',prediction = my_prediction)