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. BZOJ3561 DZY Loves Math VI 【莫比乌斯反演】

    题目 给定正整数n,m.求 输入格式 一行两个整数n,m. 输出格式 一个整数,为答案模1000000007后的值. 输入样例 5 4 输出样例 424 提示 数据规模: 1<=n,m<= ...

  2. One-Way Streets (oneway)

    One-Way Streets (oneway) 题目描述 Once upon a time there was a country with nn cities and mm bidirection ...

  3. 【HDU 1711 Number Sequence】

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission ...

  4. Flask request获取参数问题

    https://www.jianshu.com/p/ecd97b1c21c1 https://blog.csdn.net/lovebyz/article/details/52244330 https: ...

  5. python(4)-- 日期 & 时间

    1. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 2. 时间间隔是以秒为单位的浮点小数. 3. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长 ...

  6. 基于webpack搭建vue-cli以及webstorm的设置

    N1.检查本地电脑是否安装node和npm 安装vue-cli的前提是已经安装了npm 是否安装npm检查命令 npm -v 如果出现版本号,说明已经安装了npm 查看node版本号 node -v ...

  7. 当时用vuex的时候,使用...对象展开扩展符报错的解决办法

    出现这种问题的主要原因是当前的babel不支持...对象展开扩展符,只需要安装一个插件然后再在.babelrc当中进行下配置就好了 npm i babel-plugin-transform-objec ...

  8. mybatis 从数据库查询的信息不完整解决办法

    List<Product> products = productService.getProductListWithPage(productQuery); 今天碰到一个很奇怪的现象,上面的 ...

  9. hdu 5669 Road

    题目大意 \(n\)个点,\(m\)次连边 每次连边为\((a\sim b)\leftrightarrow (c\sim d),cost=w\) 即在\((a-b)\)区间内的点向\((c-d)\)区 ...

  10. Linux中的小括号和大括号,${}/$()/()/{}/${var:-string}/${var:=string}/${var:+string}/${var:?string}/${var%pattern}/${var#pattern}/${var%%pattern}/${var##pattern}

    简单记录一下大小括号在Linux中的用处. 1.${var},这是Linux中变量的原形.所以$var,别忘记了你的本来面目. # a= # echo $a # echo ${a} # echo ${ ...