0
sklearnパイプラインをスクリーニングし、sklearnのドキュメントから勉強するのは初めてです。私はmovie reviewデータの感情分析に使った。データには、最初にclass
と2番目のtext
の2つの列が含まれています。sklearnパイプラインが機能していません
input_file_df = pd.read_csv("movie-pang.csv")
x_train = input_file_df["text"] #used complete data as train data
y_train = input_file_df["class"]
は、私は、このためのカスタムトランス書いsentiment score for each sentence.
、1つの特徴だけを使用:
pipeline = Pipeline([
("word_level_sentiment",GetWorldLevelSentiment()),
("clf", MultinomialNB())])
して、パイプラインにフィットを呼び出します:
class GetWorldLevelSentiment(BaseEstimator, TransformerMixin):
def __init__(self):
pass
def get_word_level_sentiment(self, word_list):
sentiment_score = 1
for word in word_list:
word_sentiment = swn.senti_synsets(word)
if len(word_sentiment) > 0:
word_sentiment = word_sentiment[0]
else:
continue
if word_sentiment.pos_score() > word_sentiment.neg_score():
word_sentiment_score = word_sentiment.pos_score()
elif word_sentiment.pos_score() < word_sentiment.neg_score():
word_sentiment_score = word_sentiment.neg_score()*(-1)
else:
word_sentiment_score = word_sentiment.pos_score()
print word, " " , word_sentiment_score
if word_sentiment_score != 0:
sentiment_score = sentiment_score * word_sentiment_score
return sentiment_score
def transform(self, review_list, y=None):
sentiment_score_list = list()
for review in review_list:
sentiment_score_list.append(self.get_word_level_sentiment(review.split()))
return np.asarray(sentiment_score_list)
def fit(self, x, y=None):
return self
パイプライン私が使用している
pipeline.fit(x_train, y_train)
しかし、これは私には、次のエラーを与えている:
This MultinomialNB instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
誰かが私がここで間違ってやっているものを私を導いてくださいことはできますか?それは大きな助けになるでしょう。
を振る舞いを複製するために、エラーと完全なコードの完全なスタックトレースを投稿してください。 –
( "clf"、MultinomialNB) – CrazyElf
@CrazyElfのようにかっこを削除してください。かっこを削除しても機能しません。パイプラインには、クラスではなくインスタンスが必要です。 –