【学习笔记】本代码来自深度之眼训'j练营,数据是达观杯竞赛提供数据
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
print("开始加载数据")
df_train = pd.read_csv('E:/机器学习/new_data/train_set.csv')
df_test = pd.read_csv('E:/机器学习/new_data/test_set.csv')
df_train.drop(columns=['article', 'id'], inplace=True) #删除列
df_test.drop(columns=['article'], inplace=True)
print("数据加载完成")
#ngram_range:词组切分的长度范围
#max_df:最大词频或次数,大于此值,不会被当作关键词
#min_df:最小词频或次数,小于此值,不会被当作关键词
#max_features:默认为None,可设为int,对所有关键词的term frequency进行降序排序,只取前max_features个作为关键词集
vectorizer = CountVectorizer(ngram_range=(1,2), min_df=3, max_df=0.9, max_features=100000)
vectorizer.fit(df_train['word_seg'])
x_train = vectorizer.transform(df_train['word_seg'])
x_test = vectorizer.transform(df_test['word_seg'])
y_train = df_train['class']-1
print("开始拟合数据-用逻辑回归")
lg = LogisticRegression(C=4, dual=True)
lg.fit(x_train, y_train)
print("开始预测类别")
y_test = lg.predict(x_test)
print("预测结果输出到文件")
df_test['class'] = y_test.tolist()
df_test['class'] = df_test['class'] + 1
df_result = df_test.loc[:, ['id', 'class']]
df_result.to_csv('./result.csv', index=False)