新的一天来得很快。
林楠几乎没怎么睡好。
脑子里反复转着理发店名片的事,转着李薇期待的语气,转着陈屿那双平静的眼睛。天快亮时才迷迷糊糊睡过去,结果被闹钟惊醒时,头还在隐隐作痛。
上午的课他听得心不在焉。
直到第三节,数据挖掘课。
教室里的气氛有些不一样。前排几个同学在小声讨论着什么,有人翻着手机,有人交头接耳。林楠找了个靠后的位置坐下,刚放下书包,就听到教授清了清嗓子。
“安静一下。”
教室里的声音渐渐低下去。
教授推了推眼镜,点开投影。“上周说过,这门课会有小组实践作业。今天分组。”
林楠的心提了一下。
他坐直身体,眼睛盯着屏幕。
教授操作着电脑,随机分组的名单一页页跳出来。林楠的目光快速扫过那些名字,寻找着自己的。第一页没有。第二页也没有。
第三页。
他的视线停住了。
第三行。
林楠,陈屿,赵小雨。
三个名字排在一起。
林楠愣住了。
他眨了眨眼,又看了一遍。
没错。他的名字。陈屿的名字。还有一个不认识的女生。
心脏像是被什么东西轻轻捏了一下。
是巧合吗?
还是……
他忍不住转头,想看看陈屿的反应。视线在教室里扫了一圈,最后落在靠窗的位置。陈屿坐在那儿,正低头看着手机。侧脸平静,没什么表情。
好像对分组结果毫不在意。
林楠转回头,盯着屏幕。
手指在桌下悄悄握紧了。
下课铃响的时候,教室里一阵骚动。
有人开始找自己的组员。林楠慢慢收拾书包,动作很慢。他在等。等什么,他自己也说不上来。
“林楠。”
声音从旁边传来。
林楠抬起头。
陈屿站在他座位旁边,书包单肩挎着。他今天穿了件浅灰色的卫衣,看起来很清爽。
“看到分组了?”陈屿问。
林楠点点头。“嗯。”
“赵小雨我认识,同系的。”陈屿语气很平常,“我们得定个时间讨论一下选题。你什么时候有空?”
公事公办的语气。
没有任何多余的情绪。
林楠松了口气,又隐隐有些说不清的失落。他定了定神,拿出手机。“我……都可以。看你们。”
“那就明天中午吧。”陈屿说,“下课后,图书馆二楼讨论区。那里有白板,方便。”
“好。”
“我通知赵小雨。”陈屿低头在手机上打字,动作很快,“到时候我们先各自想几个选题,再一起决定。”
“嗯。”
陈屿打完字,抬起头。“那就这样。”
他转身要走。
“陈屿。”林楠突然开口。
陈屿停下脚步,回头看他。
林楠张了张嘴,想说点什么。想问这分组真的是随机的吗。想问他是不是早就知道。但话到嘴边,又咽了回去。
最后只是摇了摇头。“没事。”
陈屿看了他两秒,点点头,走了。
林楠看着他的背影消失在教室门口。
他慢慢坐下来,书包放在腿上。
周围还有同学在讨论分组的事。笑声,抱怨声,商量时间的声音。但这些声音好像隔着一层玻璃,模糊不清。
他拿出手机,点开课程群。
分组名单已经发了文件。
他下载,打开。
盯着那三个名字。
林楠,陈屿,赵小雨。
看了很久。
然后他关掉手机,站起来。
走出教学楼的时候,阳光很好。初秋的天气,不冷不热。校园里的银杏叶子开始泛黄,风一吹,沙沙响。
林楠沿着小路往宿舍走。
脑子里乱七八糟。
如果真是陈屿安排的——他怎么办到的?系统随机分组,他能干预?还是说,他只是运气好?
如果是运气好……
那也太巧了。
林楠摇摇头,强迫自己不要再想。
管它呢。
既然分到了一组,那就好好做作业。用实力说话。他林楠又不是不会做数据挖掘,上学期这门课他还拿了A。
对。
就这样。
他加快脚步。
回到宿舍,另外两个室友都不在。林楠放下书包,打开电脑。
先查查数据挖掘的案例。
他点开几个学术网站,搜索最近的热门数据集。房价预测,用户行为分析,电影评分预测……一个个看过去,记下几个觉得不错的。
然后又找了几个相关的论文,下载下来。
做完这些,已经傍晚了。
肚子有点饿。
林楠泡了碗面,坐在电脑前继续看。边吃边记笔记,把每个选题的优缺点都列出来。数据源在哪里,清洗难度如何,分析方法有哪些。
他想准备得充分一点。
不能在小组讨论的时候显得外行。
更不能拖后腿。
尤其是……在陈屿面前。
这个念头冒出来的时候,林楠手里的筷子顿了一下。
他放下筷子,看着屏幕上密密麻麻的笔记。
为什么要在意陈屿的看法?
明明应该保持距离才对。
可不知道为什么,他就是不想在陈屿面前露怯。不想被当成需要照顾的那个。不想被特殊对待。
他想证明自己。
证明自己能做好。
证明自己……很正常。
林楠深吸一口气,继续看论文。
晚上十点多,室友陆续回来了。
“林楠,还学呢?”一个室友凑过来看了眼屏幕,“数据挖掘?我靠,这课作业这么难?”
“提前准备一下。”林楠说。
“你们组有谁啊?”
林楠犹豫了一下。“陈屿,还有一个女生。”
“陈屿?”室友眼睛一亮,“可以啊!跟学霸一组,作业稳了。”
“嗯。”
“那你加油,我先洗了。”
室友拿着毛巾进了卫生间。
林楠关掉几个网页,点开图书馆的预约系统。明天中午讨论区可能人多,最好提前占个位置。他选了二楼靠窗的那个小隔间,提交预约。
系统提示预约成功。
他松了口气。
然后打开聊天软件,找到陈屿的头像。
点开对话框。
上一次聊天还是上周,陈屿问他一道编程题。他当时回了,陈屿说了句谢谢。对话就停在那里。
林楠打字:“图书馆讨论区的位置我预约好了,明天中午12点半,二楼C区3号。”
发送。
他盯着屏幕。
几秒后,手机震动。
陈屿:“收到。我会通知赵小雨。”
简短,干脆。
林楠放下手机,靠在椅背上。
窗外夜色很深。
台灯的光照在书桌上,把键盘的影子拉得很长。
他忽然想起昨晚那个问题。
陈屿到底想干什么?
现在,他们被分到了一组。接下来至少几周,他们要频繁见面,讨论,合作。
这是机会吗?
还是陷阱?
林楠不知道。
但他知道,这场舞还在继续。
而他必须跳下去。
带着更复杂的心情。
面对更近的距离。
***
第二天中午,下课铃一响,林楠就收拾书包往外走。
他特意走快了点。
想早点到图书馆,提前准备好。
但刚出教学楼,就听到身后有人叫他。
“林楠。”
林楠转过身。
陈屿正从后面走过来,书包拎在手里。他今天换了件深蓝色的外套,衬得肤色更白。
“一起去图书馆?”陈屿问。
林楠点头。“好。”
两人并肩走在校园路上。
中午的阳光很暖,路上学生很多。有急匆匆去食堂的,有抱着书去图书馆的,有三五成群说笑的。
林楠走在外侧,和陈屿保持着半步的距离。
谁也没说话。
气氛有点微妙。
林楠盯着脚下的路,脑子里飞快地转。该说点什么?课程?作业?天气?
最后他选了最安全的。
“你……想好选题方向了吗?”林楠问。
“有几个想法。”陈屿说,“等会儿一起讨论吧。”
“嗯。”
又沉默了。
林楠偷偷瞥了陈屿一眼。
陈屿走路的样子很放松,目光看着前方。侧脸线条清晰,鼻梁很挺。风把他的头发吹得微微飘动。
确实很好看。
林楠收回视线,看向前方。
图书馆到了。
他们刷卡进门,上二楼。讨论区在走廊尽头,用玻璃隔成一个个小隔间。林楠找到预约的3号,推门进去。
隔间不大,一张圆桌,三把椅子,旁边有块白板。
陈屿放下书包,从包里拿出笔记本和笔。
“赵小雨说她马上到。”他说。
“好。”
林楠也拿出自己的东西。电脑,笔记本,还有昨晚打印的几篇论文。
他整理桌面的时候,余光看到陈屿在看他。
准确地说,是在看他手里的论文。
林楠动作顿了一下。
“提前准备了一下。”他解释,声音有点不自然。
“看出来了。”陈屿说,语气听不出情绪,“很认真。”
林楠不知道该说什么,只好低下头继续整理。
门被推开。
一个女生探进头来。“请问是数据挖掘小组吗?”
林楠抬起头。
女生个子不高,齐肩短发,戴着一副圆框眼镜。她背着大大的书包,看起来有点腼腆。
“是。”陈屿站起来,“赵小雨?”
“对,是我。”女生走进来,关上门,“不好意思,刚下课人有点多。”
“没事,坐吧。”陈屿说。
赵小雨在林楠对面坐下,放下书包。她看了看林楠,又看了看陈屿,小声说:“你们好。”
“你好。”林楠说。
“那我们开始?”陈屿看向两人。
赵小雨点头。
林楠也点头。
陈屿走到白板前,拿起马克笔。“我先说我的想法。”
他在白板上写下几个关键词。
“房价预测,用户购买行为分析,社交媒体情感分析。”陈屿转身,“这三个方向数据源相对好找,分析方法也比较成熟。你们觉得呢?”
林楠看着白板。
他昨晚准备的选题里,也有房价预测和社交媒体情感分析。
“我觉得可以。”赵小雨小声说,“房价预测那个,是不是可以用Kaggle上的数据集?”
“对。”陈屿点头,“数据清洗工作会少一些。”
两人看向林楠。
林楠深吸一口气,打开自己的笔记本。
“我昨晚也看了几个方向。”他说,尽量让声音平稳,“除了房价预测,我还考虑了电影评分预测和共享单车使用量预测。”
他在白板上写下这两个选题。
“电影评分的数据集也很多,比如MovieLens。”林楠继续说,“共享单车的数据,一些城市有公开数据。”
说完,他看向陈屿。
陈屿看着白板上的字,思考了几秒。
“电影评分预测可以。”他说,“但共享单车的数据清洗可能会比较麻烦。不同城市的数据格式不统一。”
“嗯,这个我知道。”林楠说,“所以只是备选。”
陈屿点点头。
他走到桌边,拿出手机。“那我们在这几个里面选一个。投票?”
“好。”赵小雨说。
林楠也同意。
三人各自在手机上写下自己想做的选题,然后同时亮出屏幕。
林楠:房价预测。
陈屿:房价预测。
赵小雨:电影评分预测。
“二比一。”陈屿说,“那就房价预测。”
赵小雨笑了笑。“我没问题,反正都行。”
选题定了。
接下来是分工。
陈屿重新走到白板前。“数据挖掘的流程,数据收集,数据清洗,特征工程,模型选择,评估。我们可以每人负责一两块。”
他看向赵小雨。“你想做哪部分?”
赵小雨想了想。“我……可以做数据清洗和特征工程。这部分我比较熟。”
“好。”陈屿记下。
然后他看向林楠。
林楠迎上他的目光。
“我想做模型选择和评估。”林楠说,“这部分我上学期做过类似的。”
他说得很肯定。
不想被当成需要照顾的那个。
陈屿看了他两秒,点头。“可以。”
“那你呢?”林楠问。
“我负责数据收集和整体协调。”陈屿说,“另外,代码整合和报告撰写,我们可以一起做。”
分工明确。
进度安排也很快定下来。这周完成数据收集和初步清洗,下周特征工程和模型尝试,第三周整合优化,第四周写报告。
整个过程,陈屿都表现得非常专业。
说话简洁,条理清晰,考虑周全。
赵小雨偶尔提几个问题,陈屿都能给出清晰的回答。
林楠大部分时间在听,偶尔补充几句。
他注意到,陈屿说话的时候,目光会轮流看向他和赵小雨。很平等,很自然。
没有任何特殊的眼神。
没有任何多余的关注。
就好像……他们真的只是普通的组员。
这让林楠稍微放松了一些。
也许真是他想多了。
也许这分组就是随机的。
也许陈屿对他,真的没有别的想法。
讨论进行了一个多小时。
结束时,陈屿把白板上的内容拍下来,发到新建的小组群里。
“那先这样。”陈屿收拾东西,“有问题随时在群里说。”
“好。”赵小雨站起来,“那我先走了,下午还有课。”
“嗯,再见。”
赵小雨离开后,隔间里只剩下林楠和陈屿。
林楠慢慢收拾电脑和论文。
陈屿拉上书包拉链,却没有马上走。
他站在桌边,看着林楠。
林楠感觉到他的目光,动作慢下来。
“还有事?”林楠问,没有抬头。
“你昨晚准备得很充分。”陈屿说。
林楠的手指紧了紧。
“应该的。”他说。
“嗯。”陈屿顿了顿,“那……下周见。”
“下周见。”
陈屿背起书包,走出隔间。
门轻轻关上。
林楠站在原地,听着脚步声渐渐远去。
他慢慢坐下,看着白板上还没擦掉的字。
房价预测。
数据收集——陈屿。
数据清洗——赵小雨。
特征工程——赵小雨。
模型选择——林楠。
评估——林楠。
很清晰的分工。
很正常的合作。
一切都按部就班。
可为什么,他心里还是有种说不出的感觉?
林楠站起来,走到白板前。
拿起板擦,把那些字一点点擦掉。
白色的粉末飘散在空气里。
最后,白板恢复干净。
一片空白。
就像他此刻的心情。
***
接下来的几天,林楠把大部分精力都放在了小组作业上。
他找了几篇房价预测的经典论文,仔细研读。又去Kaggle上下载了几个相关的数据集,提前熟悉数据结构。
偶尔在群里,陈屿会发一些找到的数据源链接。
赵小雨也会问一些清洗数据时遇到的问题。
林楠看到就会回复。
讨论都是关于作业的,很正经,很学术。
没有任何越界的话题。
周五晚上,林楠正在看一篇关于梯度提升树的论文,手机震动了一下。
他拿起来看。
是陈屿私发来的消息。
“这个数据源你看看,里面有更详细的房屋特征。”
下面是一个链接。
林楠点开,是一个政府公开数据网站。数据很全,连房屋朝向、装修年份都有。
他打字回复:“收到,谢谢。”
发送。
几秒后,陈屿回:“不客气。你模型部分准备得怎么样了?”
林楠想了想,如实回答:“在看梯度提升树和随机森林的对比。”
“这两个都可以试试。”陈屿说,“另外,可以考虑加一些集成方法。”
“嗯,我正打算。”
对话到这里,本该结束。
但陈屿又发来一条。
“下周讨论的时候,我们可以先跑几个baseline模型。”
“好。”
林楠盯着屏幕。
手指在键盘上悬了一会儿。
他打了一行字:“你觉得,我们组能拿高分吗?”
发送。
然后他有点后悔。
问这个干嘛。
显得很在意似的。
但消息已经发出去了。
陈屿很快回复:“按现在的准备,应该可以。”
很客观的评价。
林楠松了口气。
又有点莫名的失落。
他关掉聊天窗口,继续看论文。
但注意力有点集中不起来。
他站起来,走到窗边。
宿舍楼下的路灯亮着,光线昏黄。有几个晚归的学生骑着自行车经过,车轮碾过地面,发出沙沙的声音。
林楠看着窗外。
脑子里冒出陈屿的脸。
平静的,克制的,专业的。
在讨论作业的时候,陈屿就是那样的。
一个优秀的组员。
一个可靠的合作者。
仅此而已。
也许,他真的该放下那些乱七八糟的猜想了。
也许,陈屿对他,真的没什么特别的想法。
也许,这一切真的只是巧合。
林楠深吸一口气,回到书桌前。
他重新打开论文,强迫自己集中精神。
但心底某个角落,有个小小的声音在问:
如果真的只是巧合……
为什么你会这么在意?
***
周末两天,林楠几乎没怎么出门。
他把能找到的房价预测案例都看了一遍,做了详细的笔记。又写了几段代码,试了几个简单的模型。
周日下午,他收到赵小雨在群里发的消息。
“数据清洗做完了,我传到云盘了。”
林楠点开链接,下载文件。
数据清洗得很干净,缺失值处理得当,异常值也剔除了。特征列标注清晰,还附了说明文档。
林楠在群里回复:“收到,辛苦了。”
赵小雨回了个笑脸。
过了一会儿,陈屿也回复:“收到。林楠,你那边可以开始跑模型了。”
林楠打字:“好,明天我试试。”
“嗯。”
对话结束。
林楠看着群里三个人的头像。
他的,陈屿的,赵小雨的。
很普通的小组群。
很普通的合作。
一切都在正轨上。
他关掉群聊,打开数据文件。
开始工作。
***
周一中午,第二次小组讨论。
还是图书馆二楼,同一个隔间。
林楠到的时候,陈屿已经在了。他正坐在桌前看电脑,听到开门声,抬起头。
“来了。”陈屿说。
“嗯。”林楠坐下。
赵小雨还没到。
隔间里很安静。林楠打开电脑,准备展示他周末跑的模型结果。
他有点紧张。
想表现得专业一点。
“我试了几个模型。”林楠开口,声音尽量平稳,“线性回归,决策树,随机森林。随机森林的效果最好,但还有点过拟合。”
陈屿凑过来看他的屏幕。
距离有点近。
林楠能闻到陈屿身上淡淡的洗衣液味道。很清爽,有点像薄荷。
他身体僵了一下。
但陈屿很快看完了,退回到自己的位置。
“可以试试调整参数。”陈屿说,“另外,特征选择可能还需要优化。”
“嗯,我知道。”
“等赵小雨来了,我们可以一起看看特征部分。”
“好。”
门开了,赵小雨走进来。
“不好意思,刚下课。”
“没事。”陈屿说,“正好,林楠跑了几个模型,我们一起来看看。”
接下来的讨论,比第一次更深入。
林楠展示了他的代码和结果。赵小雨提出了几个特征方面的问题。陈屿给出了参数调整的建议。
三个人在白板上写写画画,讨论得很投入。
有那么几个瞬间,林楠几乎忘了那些乱七八糟的顾虑。
他沉浸在技术讨论里,提出自己的想法,反驳不合理的建议,接受有用的意见。
就像真正的小组合作一样。
自然,顺畅,有效率。
一个多小时过去,初步的方案定下来了。
模型选择随机森林和梯度提升树,并行尝试。特征再筛选一轮,去掉相关性太高的。参数用网格搜索优化。
“那这周的任务明确了。”陈屿总结,“林楠继续优化模型,小雨做第二轮特征筛选,我负责代码整合和进度跟踪。”
“好。”
“没问题。”
三人收拾东西。
走出图书馆的时候,已经是下午两点多。
阳光斜斜地照在走廊上,把三个人的影子拉得很长。
“那我先走了。”赵小雨说,“下午还有实验。”
“嗯,下周见。”
赵小雨离开后,林楠和陈屿并肩走下楼梯。
“你接下来有课吗?”陈屿问。
“没有。”林楠说,“回宿舍。”
“我也是。”
两人走出图书馆大门。
秋天的风吹过来,带着点凉意。林楠裹了裹外套。
“你模型部分做得不错。”陈屿突然说。
林楠愣了一下。
他转头看陈屿。
陈屿目视前方,侧脸平静。
“谢谢。”林楠说,声音有点干。
“实话。”陈屿说,“代码很规范,结果分析也到位。”
林楠不知道该说什么。
他低下头,看着脚下的路。
心里涌起一股复杂的情绪。
有点高兴。
有点紧张。
还有点……不知所措。
“你也很专业。”林楠说,声音很小。
陈屿笑了笑。
很轻的笑声。
林楠抬头看他。
但陈屿已经收起了笑容,表情恢复平静。
“好好合作。”陈屿说,“争取拿个高分。”
“嗯。”
走到宿舍区分岔路。
林楠的宿舍在东区,陈屿的在西区。
“那我往这边。”林楠指了指东边。
“好。”陈屿说,“下周见。”
“下周见。”
林楠转身,往东区走。
走了几步,他忍不住回头。
陈屿还站在原地,看着他。
两人目光对上。
陈屿朝他点了点头,然后转身,往西区走去。
林楠站在原地,看着他的背影。
直到陈屿消失在路的拐角。
他才慢慢转身,继续往宿舍走。
风吹过路边的银杏树,叶子沙沙响。
阳光透过枝叶缝隙,在地上投下斑驳的光影。
林楠走着走着,忽然想起一个问题。
刚才,陈屿是故意等他先走的吗?
还是只是巧合?
他摇摇头。
不要再想了。
他告诉自己。
就当做是巧合。
就当做是正常的合作。
就当做……什么都没有。
他加快脚步,跑上宿舍楼的台阶。
推开门的瞬间,楼道里熟悉的气味扑面而来。
他回到自己的世界。
暂时安全的,可以放松的世界。
但心里清楚。
下周,下下周,他们还会见面。
还会讨论,还会合作。
这场舞,还在继续。
而他,还得跳下去。