###前提・実現したいこと
Twitterのプロフィール文を読み込んでクラス判定をする識別機を機械学習を用いて実現させようとしています。使用言語はPythonです。
識別機を作成しそこそこの識別率は出すことが出来ますが識別率を向上させるためにプロフィール文の文字数が特定の値以下だった場合クラスAに属すると断定するといった形のプログラムに書き換えたいと思っています。
###発生している問題・エラーメッセージ
sklearnライブラリによって作成された識別機に新たな機能を追加するということが出来るのかが分からず、行き詰っています。
詳しい方に知恵を貸して頂きたいです。
###該当のソースコード
from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import BernoulliNB import pandas as pd #データをcsvファイルから取得 original_df = pd.read_csv('data.csv',encoding='cp932') original_df['v1'].value_counts() #文字列データ(X)とラベルデータ(Y)を格納 X = pd.DataFrame(original_df['v2']) y = original_df['v1'] #学習用とテスト用に分割 X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5) #CountVectorizer宣言(出現頻度3度以下の単語は除外) vectorizer = CountVectorizer(min_df=3) vectorizer.fit(X_train['v2']) #文字数、学習に用いる単語を表示 print('Vocabulary size: {}'.format(len(vectorizer.vocabulary_))) print('Vocabulary content: {}'.format(vectorizer.vocabulary_)) #特徴ベクトル化 X_train_bow = vectorizer.transform(X_train['v2']) X_test_bow = vectorizer.transform(X_test['v2']) print('X_train_bow:\n{}'.format(repr(X_train_bow))) print('X_test_bow:\n{}'.format(repr(X_test_bow))) #学習 model = BernoulliNB() model.fit(X_train_bow, y_train) #正答率表示 print('Train accuracy: {:.3f}'.format(model.score(X_train_bow, y_train))) print('Test accuracy: {:.3f}'.format(model.score(X_test_bow, y_test)))
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/21 02:34
2017/12/21 02:42