機(jī)器學(xué)習(xí)實(shí)戰(zhàn)

數(shù)據(jù)集地址:https://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz

1.下載數(shù)據(jù)集

2.執(zhí)行代碼

代碼如下:


# coding=utf-8

import?pyprind??

import?pandas?as?pd??

import?os??

import?numpy?as?np??

import?re??

from?nltk.stem.porter?import?PorterStemmer??

import?nltk??

from?nltk.corpus?import?stopwords??

from?sklearn.grid_search?import?GridSearchCV??

from?sklearn.pipeline?import?Pipeline??

from?sklearn.linear_model?import?LogisticRegression??

from?sklearn.feature_extraction.text?import?TfidfVectorizer??

import?time??


start?=?time.clock()??


homedir?=?os.getcwd()#獲取當(dāng)前文件的路徑??

#第一步:導(dǎo)入數(shù)據(jù)并輸出到moive_data.csv??

'''''

pbar=pyprind.ProgBar(50000)

labels={'pos':1,'neg':0}#正面和負(fù)面評(píng)論標(biāo)簽

df?=?pd.DataFrame()

for?s?in?('test','train'):

????for?l?in?('pos','neg'):

????????path=homedir+'/aclImdb/%s/%s'?%(s,l)

????????for?file?in?os.listdir(path):

????????????with?open(os.path.join(path,file),'r')?as?infile:

????????????????txt?=infile.read()

????????????df?=df.append([[txt,labels[l]]],ignore_index=True)

????????????pbar.update()

df.columns=['review','sentiment']

np.random.seed(0)

df=df.reindex(np.random.permutation(df.index))#重排數(shù)據(jù)集,打散正負(fù)樣本數(shù)據(jù)

df.to_csv(homedir+'/movie_data.csv',index=False)

'''??

#第二步:文本數(shù)據(jù)清洗和特征向量化??

df=pd.read_csv(homedir+'/movie_data.csv')??

def?preprocessor(text):??

text=re.sub('<[^>]*>','',text)#移除HTML標(biāo)記,#把<>里面的東西刪掉包括內(nèi)容??

emotions=re.findall('(?::|;|=)(?:-)?(?:\)|\(|D|P)',text)??

text=re.sub('[\W]+','?',text.lower())+''.join(emotions).replace('-','')??

return?text??

#print?(preprocessor(df.loc[0,'review'][-50:]))#數(shù)據(jù)集第一行review字段的最后50個(gè)字符??

#print?(preprocessor("This?:)?is?:(?a?test?:-)!"))??

df['review']=df['review'].apply(preprocessor)??

def?tokenizer(text):#提取詞匯??

return?text.split()??

porter=PorterStemmer()??

def?tokenizer_porter(text):#文本分詞并提取詞干??

return?[porter.stem(word)?for?word?in?text.split()]??

nltk.download('stopwords')#停用詞移除(stop-word?removal)硅急,停用詞是文本中常見(jiàn)單不能有效判別信息的詞匯??

stop?=?stopwords.words('english')#獲得英文停用詞集??

#print?([w?for?w?in?tokenizer_porter('a?runner?likes?running?and?runs?a?lot')?if?w?not?in?stop])??

#第三步:模型訓(xùn)練??

X_train=df.loc[:25000,'review'].values??

y_train=df.loc[:25000,'sentiment'].values??

X_test=df.loc[25000:,'review'].values??

y_test=df.loc[25000:,'sentiment'].values??

tfidf=TfidfVectorizer(strip_accents=None,lowercase=False,preprocessor=None)??

param_grid?=?[{'vect__ngram_range':[(1,1)],'vect__stop_words':[stop,None],'vect__tokenizer':[tokenizer,tokenizer_porter],'clf__penalty':['l1','l2'],'clf__C':[1.0,10.1,100.0]},\??

{'vect__ngram_range':[(1,1)],'vect__stop_words':[stop,None],'vect__tokenizer':[tokenizer,tokenizer_porter],'vect__use_idf':[False],'vect__norm':[None],'clf__penalty':['l1','l2'],'clf__C':[1.0,10.1,100.0]}?]??

lr_tfidf?=Pipeline([('vect',tfidf),('clf',LogisticRegression(random_state=0))])??

gs_lr_tfidf=GridSearchCV(lr_tfidf,param_grid,scoring='accuracy',cv=5,verbose=1,n_jobs=-1)??

gs_lr_tfidf.fit(X_train,y_train)??

print?('Best?parameter?set?:%s'?%?gs_lr_tfidf.best_params_)??

print?('CV?Accuracy:%.3f'%gs_lr_tfidf.best_score_)??

clf=gs_lr_tfidf.best_estimator_??

print?('Test?Accuracy:%.3f'%clf.score(X_test,y_test))??

end?=?time.clock()??????

print('finish?all?in?%s'?%?str(end?-?start))


執(zhí)行完成的結(jié)果如下:


代碼運(yùn)行結(jié)果

3.執(zhí)行代碼時(shí)遇到的問(wèn)題:

(1)No module named pyprind鲜屏,在服務(wù)器的python3 下執(zhí)行.py文件時(shí)出現(xiàn)沒(méi)有對(duì)應(yīng)的包证膨,需要安裝盲泛,下面的指令表示在root權(quán)限下疗隶,在python3 下安裝pyprind霞扬,之后遇到的相同的問(wèn)題糕韧,關(guān)于別的包,解決方法類(lèi)似祥得,替換不同的包即可

sudo python -3 -m pip install pyprind

(2)'encoding' is an invalid keyword argument for this function

解決方法兔沃,將open 改成io.open :

import io

data_file = io.open("F:\\MyPro\\data.yaml", "r", encoding=‘utf-8‘)

(3)'ascii' codec can't encode character u'\x96' in position 1448: ordinal not in range(128)

解決方案,加上如下代碼:

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末级及,一起剝皮案震驚了整個(gè)濱河市乒疏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饮焦,老刑警劉巖怕吴,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異县踢,居然都是意外死亡转绷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)硼啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)议经,“玉大人,你說(shuō)我怎么就攤上這事谴返∩飞觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵嗓袱,是天一觀(guān)的道長(zhǎng)籍救。 經(jīng)常有香客問(wèn)我,道長(zhǎng)渠抹,這世上最難降的妖魔是什么蝙昙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮梧却,結(jié)果婚禮上奇颠,老公的妹妹穿的比我還像新娘。我一直安慰自己放航,他們只是感情好大刊,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般缺菌。 火紅的嫁衣襯著肌膚如雪葫辐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天伴郁,我揣著相機(jī)與錄音耿战,去河邊找鬼。 笑死焊傅,一個(gè)胖子當(dāng)著我的面吹牛剂陡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狐胎,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸭栖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了握巢?” 一聲冷哼從身側(cè)響起晕鹊,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暴浦,沒(méi)想到半個(gè)月后溅话,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歌焦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年飞几,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片独撇。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屑墨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纷铣,到底是詐尸還是另有隱情卵史,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布关炼,位于F島的核電站,受9級(jí)特大地震影響匣吊,放射性物質(zhì)發(fā)生泄漏儒拂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一色鸳、第九天 我趴在偏房一處隱蔽的房頂上張望社痛。 院中可真熱鬧,春花似錦命雀、人聲如沸蒜哀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撵儿。三九已至乘客,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淀歇,已是汗流浹背易核。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪默,地道東北人牡直。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纳决,于是被迫代替她去往敵國(guó)和親碰逸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容