機器學習_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))
沒有留言:
張貼留言