机器学习之分类器

0、分类器热身,NextStep比较懒,直接看图


疾病分类模型

分类分类,先分解再分类,比如,疾病分类模型先将病情的表现信息进行分解成,体温信息,X光检查信息,运动习惯信息等分解,放入模型后,可以得出是健康、感冒、肺炎。

比较对下面简单句子分解分类:

from sklearn.feature_extraction.text import CountVectorizer

count = CountVectorizer()

docs = np.array(['How are you?', 'Fine, thank you.','And you?'])

print(count.fit_transform(docs))

bag = count.fit_transform(docs)

print(count.vocabulary_)

print(bag.toarray())

bag = count.fit_transform(docs)

print(count.vocabulary_) 

{'how': 3, 'are': 1, 'you': 5, 'fine': 2, 'thank': 4, 'and': 0}

这三句话,出现了6个词语,按照字符先后编号 0到6


这三个数组分别代表上面三句话 对应词语出现的次数



#对单词进行向量表示( 词频-逆向文件频率)

from sklearn.feature_extraction.text import TfidfTransformer

ftidf = TfidfTransformer()

print(ftidf.fit_transform(count.fit_transform(docs)).toarray())


对应的词语的向量权重


BOW



TF-IDF

来上代码 正式开始了

1、 数据准备

import pandas as pd

import numpy as np

df = pd.read_csv('movie_data.csv')


2、清理数据(H5多余标签清除,符号清除)

2.1导入数据后,这个时候发现我们可能发现数据不是很干净,有很多多余的H5标签,问号等标点符号,那这个时候我们需要多数据进行清理。

import re as pre   #re是正则表达包

#正则表达式 过滤

def preprocessor(text):

       text = pre.sub('<[^>]*>', '', text)

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

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

      return text

preprocessor(df.loc[0,'review'][-50:]

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


举例标签去除

3、拆解语汇(拆解语汇可以发现有多少正面的词汇和反面的词汇、并恢复自然状态)

#拆解字汇

def tokenizer(text):

return text.split()

tokenizer('Singer like singing and thus they sing')

#恢复单词自然状态

from nltk.stem.porter import PorterStemmer

porter = PorterStemmer()

def tokenizer_porter(text):

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

tokenizer_porter('Singer like singing and thus  they sing')

举例:

拆解语汇举例

4、去除停用语(the a  等一些无意义的词语)

#去除停用语

import nltk

nltk.download('stopwords')

from nltk.corpus import stopwords

stop = stopwords.words('english')

#去掉无意义的垃圾词语 a and

pstr = [w for w in tokenizer_porter('Singer like singing and thus  they sing') if w not in stop]


举例去除停用语

5、建构情感分析模型

     5.1、先对数据进行分割(训练组、测试组)

#数据分割

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

    5.2、网格搜索

#网格搜索 类似excel 数据一格一格,

from sklearn.grid_search import GridSearchCV

#把网格 做流水线的处理

#工具类导包

from sklearn.pipeline import Pipeline

from sklearn.linear_model import LogisticRegression

from sklearn.feature_extraction.text import TfidfVectorizer

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

#设置网格参数 (会用到上面举例的方法)

param_grid = [{'vect__ngram_range': [(1,1)],   #一个格子一个格子的爬

                          'vect__stop_words': [stop, None],#遇到stop_words 去掉

                          'vect__tokenizer': [tokenizer,tokenizer_porter],#拆解词汇 分解到自然状态

                           'clf__penalty': ['l1', 'l2'],#一口气 爬多少数据

                            'clf__C': [1.0, 10.0, 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.0, 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: %f' % gs_lr_tfidf.best_score_)

model = gs_lr_tfidf.best_estimator_ #最佳模型跑一下 测试数据

print('Test Accuacy: %f' % model.score(X_test, y_test))

结果:

Best parameter set


CV Accuracy: 0.898644
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 148,827评论 1 317
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 63,511评论 1 266
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 99,318评论 0 218
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,108评论 0 189
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,112评论 1 266
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,387评论 1 185
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,905评论 2 283
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,657评论 0 177
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,144评论 0 223
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,744评论 2 225
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,100评论 1 236
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,565评论 2 222
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,041评论 3 216
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,769评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,301评论 0 178
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,173评论 2 239
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,313评论 2 242

推荐阅读更多精彩内容