1.背景

        随着将中期的代码托管到CSDN的平台上,ospaf(开源项目成熟度分析工具)已经有了小小的雏形。当然还远远不够。

      首先还是要感谢这次活动组织方CSDN,感觉挺有Google Summer Code 中国版的味道。还有就是我的夏令营导师David,给了我非常多指导和帮助,线下的交流也非常让我长见识。

     接着来说ospaf这个项目(有兴趣的tx能够去看题案,地址)。依照之前的计划。在中期答辩之前要完毕对于github相关api的了解,将github的一些数据clone到本地的数据库,利用一些机器学习算法训练模型。然后能够利用这个模型对其他项目进行评价。到今天为止这些功能都已经简单实现了,只是都是非常0基础的版本号(代码地址)。以下简介下项目流程。

2.项目流程

第一步:github api调用

         调研三种跟github有关的api,各自是github官方api、github archive、GHTorrent。当中GHTorrent提供的数据最全(包括commits等信息),可是由于数据量实在过于庞大,在没有server之前仅仅好舍弃。剩下两种事实上提供的数据是一样的,仅仅只是github官方的api有一定的流量限制。终于还是选定了官方api。
         首先就是获得github上面的项目的api地址,要做一些json格式解析工作。还有就是一些正则匹配。

存入到数据库大致是例如以下所看到的。

图 2-1 url
       之后就能够读取每一个每一个url地址,获得相关项目的具体信息。存到数据库。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnVwdGdzaGVuZ29k/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="388" height="135" alt="" />

图2-2 repo info

第二步:处理数据。构建训练集

       把数据放到数据库之后,剩下就是机器学习的内容了。由于受限于流量限制。每小时仅仅能clone下来43个项目的数据,所以训练集不足,就没有对特征进行扩维操作(下一期会重点解决这一块)。特征方面仅仅是对时间进行了调整,把年月日的格式换成了对于距离当天的日期差,如:created_at=500,也就是说这个项目是500天前建立的。

      由于算法採用的是监督学习的,所以须要设定目标队列。

目标队列的获取方法是提取了一些github showcase的项目作为正样本。其他的项目为负样本。

      这样就简单的组成了训练集。正样本和负样本的比例大概是1:6。总数据量有六十多个训练样本(少的可怜)。

第三步:机器学习

       由于训练集较小,眼下用到的算法比較少。

用到了归一化算法、採样算法对数据进行处理,计算模型使用的是逻辑回归。下图是每一个特征的回归因子。大于零的特征对于样本是正面影响,小于零的是负面影响。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnVwdGdzaGVuZ29k/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="523" height="221" alt="" />

图 2-3 feature

第四步:评測(对项目打分)

以下选用了四个项目对模型进行检验,前三个是github上的热门项目,第四个是我自己的一个项目。

图 2-4 PreSet
图 2-4 结果图
        得分大于零为成熟度高的项目,分数越高,成熟度越高。
  
 

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/

csdn开源夏令营-ospaf中期报告的更多相关文章

  1. 值得赞扬的尝试与进步——CSDN开源夏令营第一印象

    注:写这篇文章时我并未參加CSDN开源夏令营,也不确定是否会參加以及是否能參加上. 欣闻CSDN举办了"CSDN开源夏令营"活动.第一感觉是CSDN作为活动的组织者是很值得称赞的. ...

  2. CSDN开源夏令营 百度数据可视化实践 ECharts(8)问题分析

    ECharts问题描写叙述: 问题就是折线图上的点是显示的,有人问能不能一開始不显示,当你点击的时候或者是当鼠标移动到上面的时候,折线上的点才显示? 例如以下图所看到的: 分析:让折线上的点不显示能够 ...

  3. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之编译compiz源代码

    在開始介绍之前先吐个嘈:上周我们暑期ACM集训開始了.平均下来基本上是一天一赛.有时还不止.又是多校联赛,又是CodeForces,又是TopCoder.又是BestCoder,又是AcDream.还 ...

  4. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之compiz特效插件介绍及特效实现

    compiz自带的特效插件不够多,也不够强大.为了更好的体验compiz的特效,我们能够安装特效插件,在终端输入命令:sudo apt-get install compiz-plugins就能够下载特 ...

  5. CSDN开源夏令营 百度数据可视化实践 ECharts(8)

    (1)前言 首先谢谢林峰老师,继续接着第七篇提到的内容.CSS布局确实非常累,感觉不好看了就的调整,总的看起来的高大上嘛.好了废话不再多说.今天主要就先解说一个页面的内容,对于CSS布局后面讲会具体的 ...

  6. CSDN开源夏令营 百度数据可视化实践 ECharts(4)

    ECharts知识点总结: 在应用过程中总会遇到一些难以理解的概念和属性,这里就总结了一下比較难的知识点,方便理解概念.进而更好的掌握ECharts. (1)1.  一个完整的option包括什么?能 ...

  7. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之前期准备 git的简单使用

    因为项目的代码须要上传到git上.就须要学习一下git的使用了. 我初步接触了一下git,准备用此帖来记录git的学习,此帖会随着我对git了解的深入动态更新. 一.GIT的介绍 1.概述:git是一 ...

  8. 商汤开源的mmdetection技术报告

    目录 1. 简介 2. 支持的算法 3. 框架与架构 6. 相关链接 前言:让我惊艳的几个库: ultralytics的yolov3,在一众yolov3的pytorch版本实现算法中脱颖而出,收到开发 ...

  9. 由csdn开源项目评选中闹出刷票问题想到投票程序的设计

    帖子<#CSDN刷票门# 有没有人在恶意刷票?CSDN请告诉我!用24小时监控数据说话!> http://www.cnblogs.com/sanshi/p/3155946.html 网站投 ...

随机推荐

  1. 节点流——FileInputStream&FileOutputStream

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  2. js作用域的理解

    script:自上而下 全局变量.全局函数 函数:由里到外 浏览器: “JS解析器” 1)“找一些东西”: var function 参数 a = undefine 所有的变量,在正式运行代码之前,都 ...

  3. xtrabackup安装使用说明

    软件介绍: Percona XtraBackup是一块开源且免费的对MySQL Innodb存储引擎备份数据的工具,使用此工具的时候不需停止MySQL,而且支持压缩备份,支持对Innodb存储引擎做增 ...

  4. windows下Call to undefined function curl_init() error问题

    本地项目中使用到curl_init()时出现Call to undefined function curl_init()的错误,去掉php.ini中的extension=php_curl.dll前的分 ...

  5. bzoj 3101 N皇后构造一种解 数学

    3101: N皇后 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 70  Solved: 32[Submit][S ...

  6. BZOJ1709超级弹珠

    1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 352  Solved:  ...

  7. LOJ#2132. 「NOI2015」荷马史诗

    $n \leq 100000$个数字,放进$k$叉树里,一个点只能放一个数,使所有数字乘以各自深度这个值之和最小的同时,最大深度的数字最小. 哈夫曼.这是我刚学OI那段时间看到的,感觉就是个很无聊的贪 ...

  8. 先将Excel导入到gridview再添加进数据库【Excel批量添加】

    原文发布时间为:2008-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 前台: <%@ Page Language="C#" AutoEventWireup=& ...

  9. android中与Adapter相关的控件----ViewFlipper

    ViewFlipper(翻转视图) 一.ViewFlipper是一个多页面管理的控件,与ViewPager不同,ViewPager的是一页一页的的,而ViewFlipper则是一层一层的.图片轮播或者 ...

  10. layui 的Tab选项卡

    http://www.layui.com/doc/element/tab.html <#--start--> <div class="layui-tab layui-tab ...