1. 程式人生 > >sklearn——樸素貝葉斯分文字分類2

sklearn——樸素貝葉斯分文字分類2

使用sklearn中的tf-idf向量選擇器對向量進行選擇,是一個特徵選擇的過程

程式碼:

# 從sklearn.feature_extraction.text裡分別匯入TfidfVectorizer。
from sklearn.feature_extraction.text import TfidfVectorizer
# 採用預設的配置對TfidfVectorizer進行初始化(預設配置不去除英文停用詞),並且賦值給變數tfidf_vec。
tfidf_vec = TfidfVectorizer()

# 使用tfidf的方式,將原始訓練和測試文字轉化為特徵向量。
X_tfidf_train = tfidf_vec.fit_transform(X_train)
X_tfidf_test = tfidf_vec.transform(X_test)

# 依然使用預設配置的樸素貝葉斯分類器,在相同的訓練和測試資料上,對新的特徵量化方式進行效能評估。
mnb_tfidf = MultinomialNB()
mnb_tfidf.fit(X_tfidf_train, y_train)
print 'The accuracy of classifying 20newsgroups with Naive Bayes (TfidfVectorizer without filtering stopwords):', mnb_tfidf.score(X_tfidf_test, y_test)
y_tfidf_predict = mnb_tfidf.predict(X_tfidf_test)
print classification_report(y_test, y_tfidf_predict, target_names = news.target_names)
結果:提高了不到一個百分點