日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

手把手教你搭建一個(gè)簡(jiǎn)易的文本分類(lèi)器

 

我是@老K玩代碼,專(zhuān)注分享實(shí)戰(zhàn)項(xiàng)目和最新行業(yè)資訊,已累計(jì)分享超1000實(shí)戰(zhàn)項(xiàng)目!


前言

所有的人工智能學(xué)習(xí)者,都是從一個(gè)個(gè)簡(jiǎn)易的分類(lèi)器開(kāi)始的實(shí)踐之路,自然語(yǔ)言處理領(lǐng)域也不例外。雖然有著包括:分詞、詞性標(biāo)注、關(guān)鍵詞提取、新聞?wù)C(jī)器翻譯等各種各樣的實(shí)際應(yīng)用,但文本分類(lèi)還是AI自然語(yǔ)言處理的基礎(chǔ)。

那么,我們應(yīng)該如何構(gòu)建起一個(gè)建議的文本分類(lèi)器呢?老K就帶大家來(lái)實(shí)踐一下。


準(zhǔn)備工作

首先,你需要有一個(gè)已經(jīng)標(biāo)記好分類(lèi)的文本文件,當(dāng)然也可以用老K準(zhǔn)備的源數(shù)據(jù),可以根據(jù)文末的方法獲取。

然后,開(kāi)始安裝必要的第三方庫(kù):pandas、sklearn

pip install pandas

pandas是最常用的數(shù)據(jù)處理的工具庫(kù)

pip install -U scikit-learn

sklearn是機(jī)器學(xué)習(xí)的一個(gè)常用庫(kù)


數(shù)據(jù)清洗

首先,我們把數(shù)據(jù)通過(guò)pandas導(dǎo)入到程序中來(lái),然后對(duì)數(shù)據(jù)進(jìn)行基礎(chǔ)的清洗

import pandas as pd

data = pd.read_csv('data.csv')

data = data.dropna(subset=['fearures'])
data = data[['features', 'targets']]

然后將數(shù)據(jù)轉(zhuǎn)為array格式,把特征和標(biāo)簽分別提取出來(lái)

dataset = data.as_matrix()
features = dataset[:, 0]
targets = dataset[:, 1]

數(shù)據(jù)預(yù)處理

由于不論特征還是標(biāo)簽,都是以文本形式表現(xiàn)的,所以我們首先需要把這些文本轉(zhuǎn)化為計(jì)算機(jī)能夠理解的形式,也就是把文本數(shù)字化。

對(duì)于特征部分,我們用sklearn自帶的詞向量化器模型轉(zhuǎn)化一下即可:

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = TfidfVectorizer()
X = tfidf.fit_transform(features)

通過(guò)上述代碼,就能一步實(shí)現(xiàn)文本的分詞和向量化;

然后我們對(duì)標(biāo)簽部分,用encoder器進(jìn)行數(shù)值化預(yù)處理:

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
Y = encoder.fit_transform(targets)

說(shuō)明一下: 模型中的fit_transform()方法相當(dāng)于fit()后立刻進(jìn)行transform(),是后兩者的合并,主要起到簡(jiǎn)化代碼的效果。


抽取訓(xùn)練集、測(cè)試集

sklearn有自帶的選擇器,可以按照設(shè)定的參數(shù)隨機(jī)生成訓(xùn)練集和測(cè)試集

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5)

通過(guò)上述代碼,就可以將特征和標(biāo)簽,按照50%測(cè)試集的比例,拆分為訓(xùn)練集和測(cè)試集


訓(xùn)練模型

接下來(lái)我們只需要選擇一個(gè)合適的模型,進(jìn)行訓(xùn)練就可以了。

這里我們選擇的是隨機(jī)森林模型,參數(shù)是默認(rèn)的。大家也可以根據(jù)自己的任務(wù)本身,選擇各自認(rèn)為合適的模型。

from sklearn.ensemble import RandomForestClassifier

cls = RandomForestClassifier()
cls.fit(X_train, Y_train)

訓(xùn)練完成后,可以用score()查看模型的準(zhǔn)確率,然后進(jìn)一步調(diào)整模型

print(cls.score(X_test, Y_test))

模型預(yù)測(cè)

在訓(xùn)練好合適的模型后,我們就可以用這個(gè)模型進(jìn)行預(yù)測(cè)了。

我們把用來(lái)預(yù)測(cè)的特征文本輸入作為sents輸入模型。

sents = ["用于預(yù)測(cè)的語(yǔ)句"]
sents = tfidf.transform(sents)
labers = cls.predict(sents)

值得注意的是,此處輸入的sents需要是list格式的數(shù)據(jù),而非str。


總結(jié)

以上就是實(shí)現(xiàn)一個(gè)簡(jiǎn)易的文本分類(lèi)器的步驟詳解,實(shí)際的分類(lèi)器應(yīng)用,寫(xiě)法也與之大致相同。

由于選擇的是默認(rèn)的模型,所以準(zhǔn)確率并不能保證,需要不斷改進(jìn)模型選擇和模型參數(shù),才能提高模型的準(zhǔn)確率,達(dá)到商業(yè)應(yīng)用的水準(zhǔn)。

以下是完整代碼:

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

# 數(shù)據(jù)清洗 ====
data = pd.read_csv('data.csv')

data = data.dropna(subset=['context'])
data = data[['features', 'targets']]

dataset = data.as_matrix()
features = dataset[:, 0]
targets = dataset[:, 1]

# 預(yù)處理 ====
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(features)

encoder = LabelEncoder()
Y = encoder.fit_transform(targets)

# 抽取訓(xùn)練集 ====
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5)

# 訓(xùn)練模型 ====
cls = RandomForestClassifier()
cls.fit(X_train, Y_train)

print(cls.score(X_test, Y_test))

分享到:
標(biāo)簽:文本 分類(lèi)
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定