那天晚上林楠没睡好。
脑子里乱七八糟的,一会儿是陈屿的背影,一会儿是毛玻璃的裂缝,一会儿又是自己咽回去的话。翻来覆去到凌晨三点,才迷迷糊糊睡过去。
第二天早上闹钟响的时候,林楠感觉脑袋沉得跟灌了铅似的。
他爬起来洗漱,对着镜子刷牙,盯着镜子里的自己看了半天。
还是那张脸。
银色的头发,女生的五官。
但好像又有点不一样了。具体哪儿不一样,他说不上来。可能就是昨晚那点透进来的光,把镜子里的影子照得没那么死气沉沉了。
林楠吐掉牙膏沫,用水冲了把脸。
管他呢。
先活着再说。
***
上午有两节数据挖掘课。
林楠踩着点进教室,找了个靠后的位置坐下。他习惯性扫了一圈,没看见陈屿。
可能还没来。
也可能今天不坐一起了。
林楠心里有点空,但又觉得这样也好。昨晚那种氛围太奇怪了,今天要是再坐一起,他都不知道该说什么。
上课铃响了。
教授是个戴眼镜的中年男人,姓李,讲课挺有意思,就是喜欢点人回答问题。林楠最怕这个,每次都把头埋得很低。
“同学们好。”李教授推了推眼镜,“今天这节课,我们要讲一个重要的内容。”
他点了下投影仪。
屏幕上跳出一行字:小组实验项目要求。
林楠心里咯噔一下。
“这学期数据挖掘的期末成绩,百分之四十来自小组项目。”李教授说,“四人一组,需要完成一个结合校园实际数据的挖掘课题。报告加代码,最后还要做演示。”
教室里响起一片哀嚎。
“老师,能不能两人一组啊?”有人喊。
“四人太多了吧!”
“就是就是,找不到队友怎么办?”
李教授笑了笑:“找不到队友?那正好,咱们今天就把组给分了。”
他点开一个软件界面。
“我做了个随机分组系统。”李教授说,“抽签决定。不过考虑到大家可能有特别想合作的同学,抽完签之后,可以有一次调剂机会。但前提是双方都同意,而且不能破坏整体分组平衡。”
得。
这下没得逃了。
林楠看着屏幕上的分组系统,手心有点出汗。
他其实无所谓跟谁一组。反正他这种人,在小组里都是透明角色,负责打打杂就行。只要能混过去,拿个及格分,他就满足了。
“好了,现在开始抽签。”
李教授点了下鼠标。
屏幕上开始滚动名字。
林楠盯着看,心脏跳得有点快。他也不知道自己在紧张什么,可能就是单纯讨厌这种不确定的感觉。
滚动停了。
第一组名单出来了。
不是他。
第二组。
第三组。
……
林楠的名字出现在第七组。
他赶紧看同组的其他人。
第一个:陈屿。
林楠脑子里嗡的一声。
啊?
不是吧?
这什么运气?
他盯着屏幕上的名字,确认了好几遍。没错,就是陈屿。
然后第二个同组:沈清言。
林楠认识沈清言。隔壁班的学霸,平时独来独往,听说成绩特别好,就是人有点冷。
第三个:王浩。
不认识。看名字像是男生。
林楠坐在那儿,感觉整个人都麻了。
跟陈屿一组。
还要一起做项目。
这得接触多少?得开多少会?得讨论多少次?
毛玻璃的裂缝怕是要裂成蜘蛛网了。
“好了,分组结果出来了。”李教授说,“现在给大家五分钟时间,可以自由调剂。想换组的同学,现在可以去找人商量。”
教室里立刻闹腾起来。
有人站起来找人,有人掏出手机发消息,有人直接喊名字。
林楠坐在原地没动。
他不知道该不该换。
换吧,好像有点刻意。不换吧,又觉得心里慌。
正犹豫着,旁边座位有人坐下了。
林楠转头一看,是陈屿。
“巧啊。”陈屿说,语气挺自然的,好像昨晚什么都没发生过,“咱们一组。”
“……嗯。”林楠应了一声,声音有点干。
“你想换组吗?”陈屿问。
林楠摇头:“没。”
他说的是实话。虽然慌,但他没想换。可能是觉得换了也没用,该来的总会来。也可能是……他不想换。
“我也不换。”陈屿说,“沈清言我认识,能力很强。王浩是通信工程的,技术应该不错。这组合挺好的。”
林楠点头。
是挺好的。
除了他自己是个拖后腿的。
“对了。”陈屿忽然说,“李教授刚才私聊我,让我当组长。”
林楠抬头看他。
“他说我之前课堂讨论表现还行,觉得我能组织好。”陈屿笑了笑,“压力大了。”
“……你能行。”林楠说。
这话是真心话。陈屿确实能行。他那种人,干什么都能干好。
“那行。”陈屿说,“既然不换组,咱们待会儿下课就开个短会,把课题方向定一下。”
“好。”
五分钟调剂时间到了。
李教授统计了一下,只有三组换了人。大部分人都认命了。
“好了,分组确定。”李教授说,“接下来我讲一下课题的具体要求……”
林楠努力集中精神听,但脑子里还是乱的。
他偷偷瞄了眼旁边的陈屿。
陈屿在认真记笔记,侧脸线条清晰,表情专注。
好像真的很认真在对待这个项目。
林楠收回目光,也翻开笔记本。
算了。
走一步看一步吧。
***
下课铃响了。
李教授交代完最后几点要求,宣布下课。
教室里的人开始往外走。
陈屿收拾好书包,看向林楠:“去三教那边的空教室?我刚才看过了,305没人。”
“好。”林楠站起来。
两人走到教室门口,正好碰上沈清言。
沈清言个子挺高,长得清秀,就是表情有点冷。他背着一个黑色的双肩包,手里拿着平板。
“陈屿。”沈清言打招呼,声音平静。
“清言。”陈屿点头,“这位是林楠,我们组的。”
沈清言看向林楠,点了点头:“你好。”
“你好。”林楠说。
“王浩呢?”陈屿问。
“他说马上到。”沈清言看了眼手机,“在路上了。”
正说着,一个男生跑了过来。
个子不高,圆脸,戴副黑框眼镜,跑得气喘吁吁的。
“对不起对不起!”男生一边喘一边说,“刚下课被老师叫住了……我是王浩。”
“没事。”陈屿说,“走吧,去305。”
***
三教305是个小教室,能坐二十来人。这会儿没课,里面空荡荡的。
四个人找了张桌子坐下。
陈屿很自然地坐到了靠讲台的位置,像是习惯性主导。林楠坐在他左边,沈清言坐右边,王浩坐对面。
“先互相认识一下吧。”陈屿说,“我是陈屿,计算机系大二。这次李教授让我当组长,我会尽量把项目组织好,但主要还是靠大家合作。”
他说得很诚恳,没有那种“我是老大你们都得听我的”的架子。
王浩先开口:“我是王浩,通信工程大二。编程还行,硬件也懂点,但数据挖掘是这学期刚学,可能得大家多带带。”
他说完不好意思地笑了笑。
沈清言接着:“沈清言,统计系大二。数学和统计基础还可以,数据分析这块我能负责。”
轮到林楠了。
林楠张了张嘴,突然不知道该说什么。
他能负责啥?
负责拖后腿?
“林楠,也是计算机系大二。”他憋出这么一句,“我……我会努力。”
这话说得他自己都心虚。
但陈屿接话了:“林楠算法理解挺深的,上次课堂讨论他提的那个思路,李教授还夸了。”
林楠愣了一下。
有这回事?
他回想了一下,好像是有一回李教授问了个问题,他小声说了句自己的想法,被陈屿听到了,陈屿就举手把那个思路说了出来。
当时李教授确实说“这个想法不错”。
但那是陈屿说的啊。
“所以算法实现这块,林楠可以多看看。”陈屿很自然地把话接下去,“清言负责数据分析,王浩可以搞数据预处理和可视化,我负责整体架构和报告。大家觉得怎么样?”
沈清言点头:“合理。”
王浩也说:“我没问题。”
林楠只能跟着点头。
“那接下来讨论课题方向。”陈屿拿出手机,打开备忘录,“李教授要求结合校园实际数据。咱们想想,学校有哪些数据可以用?”
教室里安静了几秒。
王浩先开口:“校园卡消费数据?”
“这个可以。”沈清言说,“消费数据维度多,时间、地点、金额、消费类型,能挖的东西不少。”
“但数据能拿到吗?”林楠问。
“应该可以。”陈屿说,“我之前听说学校信息中心有开放部分脱敏数据供教学研究用。我们可以去申请。”
“那课题具体做什么?”王浩问,“就分析消费模式?”
沈清言想了想:“可以做消费模式聚类,把学生分成不同的消费类型。或者做消费预测,根据历史数据预测未来的消费行为。”
“还可以做异常检测。”林楠小声说,“比如找出消费异常的学生,可能是盗刷,或者经济困难需要帮助的。”
他说完就后悔了。
干嘛多嘴。
但陈屿眼睛亮了:“这个思路好。既有技术含量,又有实际意义。”
沈清言也看向林楠:“异常检测算法你熟悉吗?”
“……看过一些。”林楠说。
其实是挺熟的。他以前自己捣鼓过这些东西,但没跟人说过。
“那行。”陈屿在备忘录上记下来,“初步方向就定‘校园卡消费模式分析与异常检测’。具体细节我们再细化。”
他抬起头,看向三个人:“大家有意见吗?”
都摇头。
“那好,课题方向就这么定了。”陈屿说,“接下来我们分一下前期任务。”
他顿了顿,开始分配。
“清言,你负责调研现有的消费数据分析论文,找三到五篇经典的,下周前把总结发群里。”
“好。”沈清言记了下来。
“王浩,你打听一下数据申请的具体流程,需要填什么表,找哪个老师,问清楚了告诉我们。”
“没问题。”王浩点头。
“林楠,你研究一下异常检测的常用算法,比较一下优缺点,看看哪个适合我们的数据。”
林楠点头:“好。”
“我负责写项目计划书大纲。”陈屿说,“另外建个群,大家加一下。”
他掏出手机,建了个微信群,把二维码放到桌上。
三个人都扫码加了。
群名被陈屿改成了“第七组-消费数据分析”。
“平时沟通就在群里。”陈屿说,“有问题随时提,有进展也随时同步。咱们争取每周碰一次面,具体时间再约。”
他说完,看向三个人:“还有什么问题吗?”
沈清言说:“数据量可能很大,得考虑计算资源。”
“我去申请实验室的服务器权限。”陈屿说,“应该能搞定。”
王浩问:“报告要写多少字啊?”
“李教授说八千到一万。”陈屿说,“不过那是后话了,先把手头的事做好。”
都没问题了。
“那今天先到这里。”陈屿站起来,“大家回去各自准备,周末前在群里简单汇报一下进度。”
散会了。
沈清言和王浩先走了。
林楠收拾书包,动作有点慢。
陈屿等他收拾好,两人一起走出教室。
走廊里没什么人。
“紧张吗?”陈屿忽然问。
林楠愣了一下:“……有点。”
“我也紧张。”陈屿说,“第一次当组长,怕带不好。”
林楠看了他一眼。
陈屿表情挺认真的,不像在开玩笑。
“你能带好。”林楠说。
“借你吉言。”陈屿笑了笑,“对了,你刚才提的异常检测,真的挺好的。李教授肯定喜欢这种有实际应用价值的点子。”
“……我就是随口一说。”
“随口一说都能说到点子上。”陈屿说,“你很厉害啊。”
林楠不知道该怎么接这话。
他低下头,盯着自己的鞋尖。
两人走到教学楼门口。
“我往东区走。”陈屿说,“你呢?”
“我回宿舍。”
“那行,回头群里聊。”陈屿摆摆手,走了。
林楠站在原地,看着他走远。
背影还是那样,挺拔,从容。
但林楠忽然觉得,这个背影好像没那么遥远了。
可能是因为他们现在是一个组的了。
绑在一起了。
林楠掏出手机,看了眼刚加的微信群。
陈屿已经在群里发了条消息:“大家备注一下姓名和专业。”
下面跟了三排“收到”。
林楠也回了个“收到”。
然后他把群置顶了。
***
回到宿舍,林楠倒在床上。
累。
不是身体累,是心累。
跟人打交道真累。
尤其是跟陈屿这种人打交道。
但好像……也没那么难受。
林楠翻了个身,打开手机,点开陈屿的聊天窗口。
光标在输入框里闪烁。
他想说点什么,但又不知道说什么。
最后他退出窗口,打开了浏览器。
搜索:异常检测算法。
既然答应了,就得做。
他不想拖后腿。
尤其不想拖陈屿的后腿。
林楠看了一会儿论文,脑子里渐渐有了思路。
确实有几个算法挺适合消费数据的。孤立森林、局部异常因子、自编码器……
他打开文档,开始整理。
手指在键盘上敲打,发出清脆的响声。
宿舍里很安静。
只有敲键盘的声音,和窗外偶尔传来的鸟叫。
林楠写着写着,忽然想起昨晚陈屿说的话。
“承担一个秘密会很累吧。”
他停下打字。
是啊。
很累。
但好像……现在没那么累了。
可能是因为有人知道这个秘密的存在。
哪怕不知道具体是什么。
但知道它在那里。
这就够了。
林楠继续打字。
文档里的字越来越多。
窗外的天渐渐暗下来。
手机震动了一下。
林楠拿起来看。
是微信群消息。
陈屿:“计划书大纲写好了,发群里了,大家看看。”
下面附了个文档。
林楠点开。
大纲写得很详细,时间安排、任务分工、预期成果,都列得清清楚楚。
一看就是花了心思的。
林楠往下翻,看到自己的名字。
负责模块:异常检测算法实现与优化。
后面还跟了一行小字:需要协助随时找我。
林楠盯着那行字看了很久。
然后他回到聊天窗口,打字。
“收到。算法调研进行中,明天能出初步报告。”
发送。
几乎同时,陈屿回复了。
“好。不用太赶,注意休息。”
林楠看着那条消息,心里某个地方软了一下。
他把手机放下,继续写文档。
键盘声又响起来。
这次,节奏轻快了不少。