基于用户搜索关键词数据为用户打上标签(年龄,性别,学历)
整体流程
(一)数据预处理
- 编码方式转换
- 对数据搜索内容进行分词
- 词性过滤
- 数据检查
(二)特征选择
- 建立word2vec词向量模型
- 对所有搜索数据求平均向量
(三)建模预测
- 利用逻辑回归模型对用户类别进行预测
将原始数据转换成utf-8编码,防止后续出现各种编码问题
import csv
def code_coversion(filename):
#原始数据存储路径
data_path = 'F:\\data_load\\' + filename
#生成数据路径
csvfile = open(data_path + '.csv', 'w')
writer = csv.writer(csvfile)
writer.writerow(['ID', 'age', 'Gender', 'Education', 'QueryList'])
#转换成utf-8编码的格式
with open(data_path, 'r',encoding='gb18030',errors='ignore') as f:
lines = f.readlines()
for line in lines[0:-1]:
try:
line.strip()
data = line.split("\t")
writedata = [data[0], data[1], data[2], data[3]]
querystr = ''
data[-1]=data[-1][:-1]
for d in data[4:]:
try:
cur_str = d.encode('utf8')
cur_str = cur_str.decode('utf8')
querystr += cur_str + '\t'
except:
continue
#print (data[0][0:10])
querystr = querystr[:-1]
writedata.append(querystr)
writer.writerow(writedata)
except:
#print (data[0][0:20])
continue
csvfile.close()
code_coversion('user_tag_query.10W.TRAIN')
code_coversion('user_tag_query.10W.TEST')
生成对应的数据表
import pandas as pd
#编码转换完成的数据
trainname = 'F:\\data_load\\user_tag_query_TRAIN.csv'
testname = 'F:\\data_load\\user_tag_query_TEST.csv'
data = pd.read_csv(trainname, encoding='gbk')
print(data.head())
#分别生成三种标签数据(性别、年龄、学历)
data.age.to_csv('F:\\data_load\\train_age.csv',index=F