当前位置: 首页>编程笔记>正文

2019北京智源大會,智源 - 看山杯 專家發現算法大賽 2019 知乎

2019北京智源大會,智源 - 看山杯 專家發現算法大賽 2019 知乎

比賽網址連接:https://www.biendata.com/competition/zhihu2019/
問題背景:高效的將知乎用戶新提出的問題邀請其他用戶進行解答,以及挖掘用戶有能力且感興趣的問題進行邀請下發,優化邀請回答的準確率,提高問題解答率以及回答生產數。
環境:jupyter

#_*_ coding:utf-8 _*_
# @Time    : 2019/11/15 19:11
# @Author  : xm_ai
# @Email   : 793790994@qq.com# 加載import
import numpy as np
import pandas as pd
import warnings, gc
warnings.filterwarnings('ignore')
path = 'data/'# 每一行代表一個單字及其 64 維 embedding 的表示
train1 = pd.read_table(path + "single_word_vectors_64d.txt", header=None, names=['word_id', 'word_num'])train1.info()train1.head(5)# 每一行代表一個詞及其 64 維 embedding 的表示
train2 = pd.read_table(path + "word_vectors_64d.txt", header=None, names=['word_vertor_id', 'word_vertor_num'])train2.info()train2.head(5)#每一行代表一個話題及其 64 維 embedding 的表示
train3 = pd.read_table(path + "topic_vectors_64d.txt", header=None, names=['topic_id', 'topic__num'])train3.info()train3.head(5)#包含邀請數據集 (數據集 7 和 8) 及回答數據集 (數據集5) 表中涉及到的所有問題列表,每一行代表一個問題的相關信息, 每一行有 7 列, 列之間采用 /tab 分隔符分割。
train4 = pd.read_table(path + "question_info_0926.txt", header=None)train4.info()train4.head(5)#為邀請數據集 (數據集 7 和 8) 中用戶最近 2 個月內的所有回答,每一行代表一個回答的相關信息, 每一行有 20 列, 列之間采用 /tab 分隔符分割
train5 = pd.read_table(path + "answer_info_0926.txt", header=None)train5.info() 
train5.head(5)# 包含邀請數據集 (數據集 7 和 8) 中用戶相關特征信息,每一行代表一個用戶的相關信息, 每一行有 21 列, 列之間采用 /tab 分隔符分割。
train6 = pd.read_table(path + "member_info_0926.txt", header=None)train6.info()
train6.head(5)# 包含用戶最近 1 個月的邀請數據,每一行代表一個問題邀請的相關信息, 每一行有 4 列, 列之間采用 /tab 分隔符分割
train7 = pd.read_table(path + "invite_info_0926.txt", header=None)train7.info()
train7.head(5)#未來 7 天的問題邀請數據,參賽隊伍需提交的最終結果數據集, 每一行代表一個問題邀請相關信息,每一行有 3 列, 列之間采用 /tab 分隔符分割。
train8 = pd.read_table(path + "invite_info_evaluate_1_0926.txt", header=None)train8.info()train8.head(5)# 總結怎么對每個數據集進行拼接操作# 第一步首先將  question_info_0926.txt question_info_0926.txt和 member_info_0926.txt進行合并
#首先將邀請數據集4問題列表和邀請數據集7問題是否回答 以及邀請集6 member用戶ID聯系在一起
path = 'data/'
member_path = path + 'member_info_0926.txt'   # 用戶信息路徑
question_path = path + 'question_info_0926.txt'  # 問題信息路徑
invito_path = path + 'invite_info_0926.txt'   # 邀請記錄路徑#手動添加mermber的21個特征(在比賽之中有提到)給user_feature
user_feature = pd.read_table(member_path, header=None, names=['memberID', 'm_sex', 'm_keywords', 'm_amount_grade', 'm_hot_grade', 'm_registry_type','m_registry_platform', 'm_access_frequencies', 'm_twoA', 'm_twoB', 'm_twoC', 'm_twoD','m_twoE', 'm_categoryA', 'm_categoryB', 'm_categoryC', 'm_categoryD', 'm_categoryE','m_salt_score', 'm_attention_topics', 'm_interested_topics'], nrows=100)#手動添加question的7個特征(在比賽之中有提到)給question_feature
question_feature = pd.read_table(question_path, header=None, names=['questionID', 'q_createTime', 'q_title_chars', 'q_title_words', 'q_desc_chars','q_desc_words', 'q_topic_IDs'], nrows=100)#手動添加invito_path的4個特征(在比賽之中有提到)給invite_info_data
invite_info_data = pd.read_table(invito_path, header=None, names=['questionID', 'memberID', 'time', 'label'], nrows=100)#數據合并操作#將invite_info_data中與user_feature,question_feature內容相同的部分進行合并操作
#invite_info_data與user_feature 的memberID進行合并
#invite_info_data與question_feature 的questionID進行合并
invite_info_data = invite_info_data.merge(user_feature, how='left', on='memberID')
invite_info_data = invite_info_data.merge(question_feature, how='left', on='questionID')
invite_info_data['day'] = invite_info_data['time'].apply(lambda x: int(x.split('-')[0][1:]))invite_info_data.info()evaluate_path = path + 'invite_info_evaluate_1_0926.txt'   # 驗證集路徑#手動添加驗證集的3個特征(在比賽之中有提到)給evaluare_info_data
evaluate_info_data = pd.read_table(evaluate_path, header=None,names=['questionID', 'memberID', 'time'])
# evaluate_info_data['day'] = evaluate_info_data['time'].apply(lambda x: int(x.split('-')[0][1:]))
#evaluare_info_data與user_feature 的memberID進行合并
#evaluare_info_data與question_feature 的questionID進行合并
evaluate_info_data = evaluate_info_data.merge(user_feature, how='left', on='memberID')
evaluate_info_data = evaluate_info_data.merge(question_feature, how='left', on='questionID')evaluate_info_data.info()# 對缺失數據進行填充
for column in list(invite_info_data.columns[invite_info_data.isnull().sum() > 0]):if invite_info_data[column].astype == 'object':invite_info_data[column].fillna('1', inplace=True)else:invite_info_data[column].fillna(-1, inplace=True)# cat_features是指 用來做處理的類別特征
import catboost as cbtfeature_name = ['q_topic_IDs', 'q_desc_words', 'q_desc_chars', 'q_title_words', 'q_title_chars', 'q_createTime','m_interested_topics', 'm_attention_topics', 'm_salt_score', 'm_categoryA', 'm_categoryB', 'm_categoryC','m_categoryE', 'm_categoryD', 'm_twoE', 'm_twoD', 'm_twoC', 'm_twoB', 'm_twoA', 'm_access_frequencies', 'm_registry_platform', 'm_keywords',  'm_sex',  'm_amount_grade',  'm_hot_grade',  'm_registry_type', 'questionID', 'memberID']cat_list = [i for i in invite_info_data.select_dtypes(object).columns if i not in ['label', 'time'] and i in feature_name]cbt_model = cbt.CatBoostClassifier(iterations=10, learning_rate=0.05, max_depth=11, l2_leaf_reg=1, verbose=1,early_stopping_rounds=400, task_type='GPU', eval_metric='AUC',cat_features=cat_list)cbt_model.fit(invite_info_data[feature_name], invite_info_data['label'])result = cbt_model.predict_proba(evaluate_info_data[feature_name])[:, 1]result_path = 'data/sample_sub_1.txt'
data_result = pd.read_table(result_path, header=None, names=['memberID', 'm_sex', 'm_keywords', 'label'], nrows=5)
data_result['label'] = resultdata_result.to_csv('sample_sub_1.txt', sep='\t', index=False, header=None)

關系簡易圖:
在這里插入圖片描述

https://www.nshth.com/bcbj/326405.html
>

相关文章:

  • 2019北京智源大會
  • 智源小學
  • 2019個稅計算方法實例
  • 2019年最新教師招聘信息
  • 2019發展趨勢
  • 2019虛歲表
  • 2019年是什么年
  • 智源
  • 編程語言難度排名,8 月最新編程語言排行榜
  • 手機usb調試被禁用怎么恢復,解決安卓手機USB接口被外設占用導致無法調試的問題
  • 手機上的安卓模擬器,連接手機模擬器
  • 搜狗輸入法怎么手寫和拼音一起輸入,零彝輸入法用戶協議
  • ubuntu自帶gcc編譯器嗎,安裝ubuntu20.04(安裝vim、gcc、VMtools、中文輸入法、漢化、修改IP、無法連網問題)
  • 輸入法哪個最好用,android ip格式化輸入法,Android設置默認輸入法
  • blkmov指令使用例子,ORB-SLAM2代碼解析
  • windows補丁kb3033929怎么安裝,Win8.1 kb2919355安裝不上怎么辦?
  • 淘寶店鋪如何增加流量,淘寶賣家開店怎么做有效減少淘寶垃圾流量
  • 商標使用必須加TM或R嗎,商標中R標和TM標的區別
  • 沒有商標可以上速賣通嘛,速賣通商標授權怎么弄?速賣通官方授權模板書分享
  • 商標中R跟C分別代表什么,商標TM和R有什么區別
  • 商標中R跟C分別代表什么,CSDN Markdown 商標標志 C、TM、R
  • 有關向量的重要結論,專題-句向量(Sentence Embedding)
  • 信息安全等級保護的5個級別,信息安全等級保護措施之網絡安全技術
  • 書是黃金屋下一句是什么,書中的“黃金屋”
  • gps定位,定位iowait問題
  • 渲染軟件哪個好用,Android平臺上基于OpenGl渲染yuv視頻
  • C# wpf 通過HwndHost渲染視頻
  • h5商城源碼,H5全新紅包直通車網站源碼 包含多款游戲已對接支付
  • android基礎面試題及答案,安卓手機系統開發教程!BTAJ面試有關散列(哈希)表的面試題詳解,大廠直通車!
  • 中交第一公路勘察設計研究院,緯地道路縱斷面設計教程_直通車 | 中交一公局公路勘察設計院有限公司招聘公告...
  • arduino怎么把程序傳到板上,STM32替換Arduino直通車
  • 記錄2015年年初跳槽的經歷!
  • 什么情況下可以跳槽,記錄 2015 年年初跳槽的經歷!
  • 聚合支付公司前十,聚合支付行業的2019年終總結大會!細品,你細品~
  • mastercam后處理論壇,mastercam2017后處理升級_如何升級Mastercam 9.1版后處理?
  • 動態表情包制作,android 視頻轉表情,視頻怎么轉gif?好用軟件分享,自己也能制作出搞笑表情包...
  • pc頁面怎么打開,頁面的版心html,關于PC端網頁版心及網頁自適應問題
  • webp圖片怎樣改成jpg,如何給圖片更改格式?jpg轉webp怎么操作