2018.08.17达观杯比赛历程(一)LR_V0

任务:理解已给的比赛代码,即每一行代码是干什么用的。
比赛地址:“达观杯”文本智能竞赛

'''
#导入所需要的软件包
'''
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
import time

time_start = time.time()
print("开始时间 :",time_start)
print("\n")

'''
# @代码功能简介:从硬盘上读取已经下载好的数据,,并进行简单处理
# @知识点定位:数据预处理
'''
# #分割较大的CSV文件
# chuck_train = pd.read_csv("./train_set.csv", chunksize=50000)
# for i, chuck in enumerate(chuck_train):
#     chuck.to_csv('train_out{}.csv'.format(i)) # i is for chunk number of each iteration

# df_train = pd.read_csv('./train_out0.csv')#读取训练集数据
df_train0 = pd.read_csv('./train_out0.csv')#读取训练集数据
df_train1 = pd.read_csv('./train_out1.csv')#读取训练集数据
df_train2 = pd.read_csv('./train_out0.csv')#读取训练集数据

#合并之前分割的数据
df_train = df_train0.append([df_train1,df_train2])

# #分割较大的CSV文件
# chuck_test = pd.read_csv("./train_set.csv", chunksize=50000)
# for j, chuck in enumerate(chuck_test):
#     chuck.to_csv('test_out{}.csv'.format(j)) # j is for chunk number of each iteration

# df_test = pd.read_csv('./test_out.csv')#读取测试集数据
df_test0 = pd.read_csv('./test_out0.csv')#读取测试集数据
df_test1 = pd.read_csv('./test_out1.csv')#读取测试集数据
df_test2 = pd.read_csv('./test_out2.csv')#读取测试集数据
df_test = df_test0.append([df_test1,df_test2])

print(df_train.head())

# df_train.drop(columns = ['article','id'],inplace=True)#删除训练集中的article列和id列
# df_test.drop(columns = ['article'],inplace=True)#删除测试集中的article列

'''
# @代码功能简介:将数据集中的字符文本转换成数字向量,以便计算机能够进行处理
# @知识点定位:特征工程
'''
vectorizer = CountVectorizer(ngram_range=(1,2),min_df=3,max_df=0.9,max_features=100000)#初始化一个CountVectorizer对象
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   #因为从0开始计数,所以要将原值-1

'''
# @代码功能简介:训练一个分类器
# @知识点定位:传统监督学习算法之线性逻辑回归
'''
lg = LogisticRegression(C=4,dual=True)  #初始化一个分类器
lg.fit(x_train,y_train)   #训练这个分类器
'''
根据上面训练好的分类器对测试集的每个样本进行预测
'''
y_test = lg.predict(x_test)
# y_test0 = lg.predict(x_test0)
# y_test1 = lg.predict(x_test1)
# y_test2 = lg.predict(x_test2)

'''
将测试集的预测结果保存到本地
'''
df_test['class'] = y_test.tolist()  #转换为python的List形式

df_test['class'] = df_test['class'] + 1   #将class+1,保持和官方预测值一致
df_result = df_test.loc[:,['id','class']]


df_result.to_csv('./result.csv',index = False)#将结果保存至本地文件
print(df_result.head())

time_end = time.time()
print("共用时:",time_end - time_start)

数据集下载地址:https://pan.baidu.com/s/13IMDPMz0rf8kM1JAea53uQ
密码:y6m4

猜你喜欢

转载自blog.csdn.net/qq_25033587/article/details/82849649