k39ec_个人页

个人头像照片 k39ec
0
1
0

个人介绍

暂无个人介绍

擅长的技术

  • Java
  • Linux
获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2014-03-23

    非官方入门指南bug更正

    Re非官方入门指南bug更正
    首先感谢oilbeater热情提供代码,像我这种一点都不会的靠着研究oilbeater的代码也算知道了点比赛该怎么做,谢谢~
    然后就说正题,我也发现oilbeater的代码有些小bug,列出来一下:
    1.原代码:
             if len(entry_date) == 5:
            day = 10 * int(entry_date[2]) + int(entry_date[3])
    我没有改成>6,而是改成了
            if len(entry_date) == 6:
    答案算出来也是可以的

    2.原代码:
        for line in raw_file.readlines():
            entry = line.split(",")
            entry_date = datetime(*parse_date(entry[3]))
            date_delta = (entry_date - begin_date).days
            if date_delta < seperate_day:
                train.write(",".join(entry[:3]) + "," + str(date_delta) + "\n")
            elif int(entry[2]) == 1:
                validation.write(",".join(entry[:2]) + "\n")
        validation.write("99999999999,9"+ "\n")
        train.close()
        validation.close()
    加粗的是我添加的一行,因为发现在generate_result函数中会把validation.csv的最后一行忽略掉,也就是代码result.write(cur_id + "\t" + ",".join(set(cur_result)) + "\n"),看它往result.txt写入的是cur_id的数据而不是uid的数据,这样就会出现最后一行数据和前一行不同时数据无法被记录的情况。小白在多次调试后才找到了这个错误,不知道怎么聪明的改代码,就加了一行多余的记录来避免这个问题。
    def generate_result(validation):
        entrys = validation.readlines()
        entrys.sort(key=lambda x: x.split(",")[0])
        result = open("result.txt", "w")
        for index, entry in enumerate(entrys):
            uid, tid = entry.strip().split(",")
            if index == 0:
                cur_id = uid
                cur_result = [tid]
            elif uid == cur_id:
                cur_result.append(tid)
            else:
                result.write(cur_id + "\t" + ",".join(set(cur_result)) + "\n")
                cur_id = uid
                cur_result = [tid]
        result.close()
    3.原代码:
    f = open("predict.txt")
    for line in f.readlines():
        uid, bid = line.split("\t")
         bid = bid.strip('\n')
        bid = bid.split(",")
        predict_num += len(bid)
    加粗的是我添加的代码,不然predict里面是‘200\n’,而result里面是‘200’的时候,就hit不上了。

    楼主的代码还是很不错的,教会了我很多。顺路去楼主博客看看了看,楼主比较牛啊,以后要向楼主多学习学习。一会发完帖子,去加楼主QQ,望同意啊。




    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息