2017年8月2日 星期三

機器學習_ML_Pipeline

機器學習_ML_Pipeline

pipeline會依序的去做轉換與模型,中間的過程都是轉換,只有最後一步是模型(分類器)!
所以中間的轉換部份唯一的限制就是必需要有fit與transform,而最後的模型部份就是只需要有fit即可!

IMPORT

from sklearn.pipeline import Pipeline

CLASS

pipeline(step)

參數說明

step的部份要放(name, transform),如下:

pp = Pipeline([('anova', anova_filter), 
             ('svc', clf)])

宣告了anova做最佳特徵,以svc做模型!
接著也可以透過set_params來做參數的設置!

pp.set_params(anova__k=10, svc__c=1)

要注意到是兩個底線!

from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
import codecs
from nltk.stem.porter import PorterStemmer
from nltk.corpus import stopwords

df = pd.DataFrame()
path = 'D:\\ML\\movie_data.csv'
porter = PorterStemmer()
stop = stopwords.words('english')

#  目前很常遇到的就是編碼的問題,所以最後找到的解法是import codecs再透過with codecs來oepn。
with codecs.open(path, "r", encoding='utf-8', errors='ignore') as fdata:
    df = pd.read_csv(fdata)


x_train = df.loc[:50, 'review'].values
y_train = df.loc[:50, 'sentiment'].values
#  上面是訓練資料,下面是測試資料
x_test = df.loc[50:, 'review'].values
y_test = df.loc[50:, 'sentiment'].values


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

#  透過pipeline執行的時候,最後一個一定是模型!
lr_tfidf = Pipeline([('vect', tfidf),
                     ('clf', LogisticRegression(random_state=0))])


print(lr_tfidf.fit(x_train, y_train))
#  利用訓練資料驗證可靠度
print(lr_tfidf.score(x_test, y_test))


沒有留言:

張貼留言