from sklearn.linear_model import LogisticRegression def train_logistic_regression(features): features = np.array(features) # 素性を持ったnumpy配列を作成。二次元配列。 words = list(set(features[:,1])) # 重複しているwordを削除する。python的。これはインデックスを指定して重複している数をカウントするため pos_vec = np.zeros(len(words)) # ポジティブベクトルの配列初期化 neg_vec = np.zeros(len(words)) # ネガティブベクトルの配列初期化 for feature in features: index = words.index(feature[1]) # indexメソッドで、対象の特徴語が、wordsリスト内のどの位置か調べる。 if feature[0] == '-1': neg_vec[index] += 1 # pos_vecの指定のインデックスに、+1を加算 else: pos_vec[index] += 1 # neg_vecの指定のインデックスに、+1を追加 logit_model = LogisticRegression() # 分類器のインスタンスを生成 logit_model.fit([pos_vec, neg_vec],[1,-1]) # 訓練する。.fit(トレーニングベクトル,正解ベクトル) return (words,logit_model) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", dest = "sentiment", default = "sentiment.txt") args = parser.parse_args() # logit = linear_model.LogisticRegression() features = get_feature(args.sentiment) train_logistic_regression(features)
fp += 1 elif label != predict and predict == -1 : global fn fn += 1 else: print "error" exit() if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", dest = "sentiment", default = "sentiment.txt") parser.add_argument("-v", "--verification", dest = "verification", default = "test_data.txt") args = parser.parse_args() features = get_feature(args.sentiment) # 学習要データの素性生成 features = np.array(features) # 素性を持ったnumpy配列を作成。二次元配列。 # クロス # train_data, test_data, train_target, test_target = crv.train_test_split(features[:,1], features[:,0], test_size = 0.2 ,random_state = 0 ) # train = np.c_[train_target, train_data] # verification = np.c_[test_target,test_data] # ロジスティック回帰モデルの作成 # 戻り値は単語とモデル logistic_model_instance = train_logistic_regression(features) words = logistic_model_instance[0] logit_model = logistic_model_instance[1] # 入力データとして1割 with open(args.verification) as verification_file: