特征提升

特征提取

目的:將數(shù)字化的信號(hào)數(shù)據(jù)、符號(hào)化的文本轉(zhuǎn)化成特征向量。

  1. 字典儲(chǔ)存的數(shù)據(jù),用DictVectorizer進(jìn)行特征抽取與向量化。
from sklearn.feature_extraction import DictVectorizer
measurements = [{'city':'Dubai','temperature':33},{'city':'London','temperature':12},{'city':'San Fransisco','temperature':18}]
vec = DictVectorizer()
print vec.fit_transform(measurements).toarray()
print vec.get_feature_names()
  1. 文本數(shù)據(jù)
    (1). 文本特征表示方法--詞袋法(Bag of Words)
    將不重復(fù)的詞匯集合成詞表,每條訓(xùn)練文本都可以在詞表上映射一個(gè)特征向量。
    (2). 特征數(shù)值的計(jì)算方法
    CountVectorizer
    考慮每種詞匯在該條訓(xùn)練文本中的頻率。
#coding:utf-8
from sklearn.datasets import fetch_20newsgroups
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

news = fetch_20newsgroups(subset='all')
x_train,x_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25,random_state=33)
#默認(rèn)不去除英文停用詞
count_vec = CountVectorizer()
#訓(xùn)練特征向量
x_count_train = count_vec.fit_transform(x_train)
x_count_test = count_vec.transform(x_test)

#對(duì)樸素貝葉斯分類(lèi)器進(jìn)行初始化
mnb_count = MultinomialNB()
#對(duì)訓(xùn)練樣本參數(shù)學(xué)習(xí)
mnb_count.fit(x_count_train,y_train)

print '20組新聞數(shù)據(jù)使用樸素貝葉斯count',mnb_count.score(x_count_test,y_test)

y_count_predict = mnb_count.predict(x_count_test)

print classification_report(y_test,y_count_predict,target_names=news.target_names)

TfidfVectorizer
不僅關(guān)注本條訓(xùn)練數(shù)據(jù),還關(guān)注其他數(shù)據(jù)。

#coding:utf-8
from sklearn.datasets import fetch_20newsgroups
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

news = fetch_20newsgroups(subset='all')
x_train,x_test,y_train,y_test =train_test_split(news.data,news.target,test_size=0.25,random_state=33)

tfidf_vec = TfidfVectorizer()
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 '20組新聞數(shù)據(jù)使用樸素貝葉斯tfidf:',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)

在訓(xùn)練文本量較多的時(shí)候,利用Tfidf提升模型性能作用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容