美文网首页
机器学习实战

机器学习实战

作者: 跳跳1314 | 来源:发表于2018-03-12 10:14 被阅读0次

数据集地址:https://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz

1.下载数据集

2.执行代码

代码如下:


# 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()#获取当前文件的路径  

#第一步:导入数据并输出到moive_data.csv  

'''''

pbar=pyprind.ProgBar(50000)

labels={'pos':1,'neg':0}#正面和负面评论标签

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))#重排数据集,打散正负样本数据

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

'''  

#第二步:文本数据清洗和特征向量化  

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

def preprocessor(text):  

text=re.sub('<[^>]*>','',text)#移除HTML标记,#把<>里面的东西删掉包括内容  

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

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

return text  

#print (preprocessor(df.loc[0,'review'][-50:]))#数据集第一行review字段的最后50个字符  

#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),停用词是文本中常见单不能有效判别信息的词汇  

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_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))


执行完成的结果如下:

代码运行结果

3.执行代码时遇到的问题:

(1)No module named pyprind,在服务器的python3 下执行.py文件时出现没有对应的包,需要安装,下面的指令表示在root权限下,在python3 下安装pyprind,之后遇到的相同的问题,关于别的包,解决方法类似,替换不同的包即可

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")

相关文章

  • K-Means算法

    参考链接:1. python机器学习实战之K均值聚类2. 机器学习实战之K-Means算法3.《机器学习实战》(十...

  • 机器学习实战中文版 pdf高清+源代码

    机器学习实战中文版 pdf高清+源代码 《机器学习实战》介绍并实现机器学习的主流算法,面向日常任务的高效实战内容,...

  • 机器学习实战-knn

    机器学习实战笔记-knn算法实战 本文内容源于《机器学习实战》一书,主要介绍了knn(k-nearest neig...

  • 2019-03-29

    <<机器学习实战>>--策略梯度

  • 思维导图

    《机器学习实战》思维导图 过完书后可以查漏补缺,温故知新。 《机器学习实战》读书笔记

  • 支持向量机(SVM)入门理解与推导

    首先推荐:机器学习实战教程(八):支持向量机原理篇之手撕线性SVM机器学习实战教程(九):支持向量机实战篇之再撕非...

  • 机器学习实战-数据探索(变量变换、生成)

    《机器学习实战-数据探索(1、变量识别;2、单变量分析;3、双变量分析)》 机器学习实战-数据探索(缺失值处理) ...

  • 【机器学习实战】Logistic回归(一)

    【机器学习实战】Logistic回归 全部程序均是依照《机器学习实战》书写,然后进行了一些修改(顺便巩固pytho...

  • 【好书推荐】机器学习书单

    今天推荐的图书专注机器学习主题,一共7本,都是经过实践检验的好书——《机器学习》《图解机器学习》《机器学习实战》《...

  • 2019-03-31

    《机器学习实战》--增強学习(代码未经验证)

网友评论

      本文标题:机器学习实战

      本文链接:https://www.haomeiwen.com/subject/vyyyfftx.html