朱繼緒 陳曉詩
(華南理工大學廣州學院,廣東 廣州 510800)
在大數據、人工智能時代,數據科技無處不在。然而,太多的數據給人們帶來的,可能并不是更多的洞察,反而是迷失。數據的價值,在于形成信息,變成知識,乃至升華為智慧。數據如果不能進一步被“深加工”,即使數據量再大,意義甚小。因而如何高效處理數據并利用數據推動決策顯得尤為重要。數據由誰來深加工?統計學專業的學生對于成為“數據科學家”具有得天獨厚的專業理論背景,掌握方法、善用工具將使統計學專業的學生更受各行各業的青睞。機器學習是大數據分析的有力工具,在某種程度上可以說是人工智能的核心,而Python是大數據分析和機器學習“武器庫”中的一把“利刃”,其功能強大且容易上手,大大降低了統計學專業學生進行大數據分析和機器學習的門檻[1]。
Python語言是快速實現數據分析、機器學習及相關領域理論與技術的利器。Python之所以這么流行,原因并不復雜,它不僅功能強大,而且易學易用[2]。Python的社區生態已然非常完備,為用戶提供了很多高質量的類庫,可直接使用,無須每次使用都得編程。Python的設計理念就是:簡單、明確、優雅。
在目前的教學實踐過程中,老師的教學重點多數集中在理論知識的傳授上,一般都照本宣科、按部就班地緊跟教材。例如,在Python的語言特點、運算符、表達式、內置對象,以及Python的序列結構、Python程序控制結構、函數、序列解包等知識點的教授上,老師大多是講完基礎知識后,再讓學生動手進行程序的編寫和調式[3]。這種教學方法中,如果學生沒有及時吸收掌握老師所講解的知識點或沒有及時實踐,理論與實踐將脫節,而且學生的積極性也不會被調動起來,因為難以從課堂所講授的內容中獲取掌握知識的成就感,也會慢慢對本門課程失去信心,學習的動力也將慢慢消失。而在采用混合式教學方法后,老師在課堂上更多的關注點會集中于解答學生無法解決的問題,引導學生發現問題、解決問題,學生在解決具體問題的實踐過程中,不斷豐富積累自己的知識庫,通過項目的引導,通過對新問題的發現、解決來補充和完善知識體系,及時動手實踐,會讓學生從剛開始看不懂程序代碼,邊敲打代碼邊深入探索,逐步掌握并了解代碼的意圖[4]。
在Python程序課程的教授過程中,有這么一個常見的問題,即學生上課認真聽講,對老師的講解也能及時掌握,但往往缺乏知行合一,沒有及時動手編寫代碼,甚至有些學生在做習題作業時參考或抄襲其他同學的學習成果,老師要求的學習任務是完成了,但是必須掌握的知識點卻沒有通過實踐去消化掌握,一遇到程序編寫題目,就無法結合所學的知識點以及探索未知的知識點來解決問題。也存在這么一種情況,知識點是掌握了,但是對學生來說,所有的知識點都是零散的,都是一個個知識片段,不會運用,沒有具體的案例或者項目,學終歸是學了,但是可以干什么,解決什么問題,不清晰,沒有獲取所需的成就感,慢慢也就積極性不高,逐步放棄了[5]。
在學習某項技能比如Python、數據分析、機器學習時,要想辦法在最短的時間內,摸索清楚這項技能的“最少必要知識”[6]。一方面,它已然可以幫助學習者解決工作學習中的大部分問題;另一方面,入門之后,技能的提升通道可以在實踐中尋得,然后再缺什么補什么。這樣就有明確的任務導向,會形成快節奏的學習方法[7]。
Python的“最少必要知識”包括基礎知識、數據分析、機器學習相關內容,具體如編程工具PyCharm、Visual Studio Code、Jupyter的使用方法等,善用這些工具,會在編程中起到事半功倍的效果。講解Python的數據類型和程序控制結構、內置模塊,以及第三方模塊、Python的函數和Python的高級特性,在此基礎上學習Numpy向量計算、Pandas數據分析、Matplotlib與Seaborn可視化分析、機器學習基礎、SkLearn與經典學習算法等,所有的知識點點到即止,引導為主,切勿過于追求理論知識體系的完整而忽略實際操作[8]。統計學專業的學生需要初步掌握數據分析、數據挖掘與數據可視化的理論基礎即可。
在講授理論知識的同時,注重以具體的教學案例來培養學生的計算機編程思維,注重引導學生發現項目需求,根據項目需求編寫程序來解決日常生活中的問題,這樣既可以提高效率,也可訓練學生解決問題的能力,逐步培養學生學習的興趣,提高學習的動力,帶著問題學習,帶著成就感學習,這樣教學質量會更高,學習效果會更好。項目問題不在大而全,就是與學生日常生活學習息息相關的問題,慢慢引導學生,當學生發現所學的知識可以用來解決生活中的實際問題的時候,會自然而然去探索更深入、難度更高的知識以滿足自身技能提高的需要[9]。
讓學生之間形成學習小組,互幫互助。鼓勵學生積極形成“問題攻堅小組”,針對老師提出的新的項目需求,要明確項目難點,需清楚結合所學的哪些知識,還需了解哪些是未講授的知識,可以從什么地方獲取資源得到幫助,在此基礎上還可以拓展思維發現新的問題,攻堅克難。明確小組考核方式,使小組積極向上,避免“搭便車”的情況出現[10]。

圖1 程序設計邏輯
本教學案例緊緊圍繞項目引導與學生互助而設計。編寫程序,請同學們為課堂教學編寫學習小組隨機分組程序,將班級所有人隨機分成若干小組。一個學生寫的隨機分組程序產生的隨機結果其他學生可能不太滿意,那就隨機生成1 000個結果,各自存放于記事本文件中。為了解決學生的選擇困難癥,就再從1 000個結果中隨機展示一個結果,隨機打開一個記事本文件。在以往的課堂教學中,學生往往自由組隊,組隊成員較為固定,缺乏更多的互動交流,學生也不愿意隨機組隊。通過這種方式可向學生展示如何實現隨機組隊,比如可以有1 000個方案,在這隨機構成的1 000個方案里隨機抽取其中的一個方案作為大家的組隊方案,而每個方案又將根據不同的方法產生兩個隨機方案。讓有趣的隨機分組替代消極的分組心態,讓課堂更為活潑有趣。
圍繞這樣一個案例,可以引申出這樣幾個問題:
(1)實現按小組總數所有樣本隨機分組。分組的結果可能出現整除或者余數的情況,每組人數可能相同也可能不同的情況。這種情況下,引導學生分析,如能整除,應當利用什么方法來進行隨機分組,而出現余數的情況又該如何解決。以42人的班級為例,利用程序進行隨機分組,若分成6組則每組7人剛好;如分成8組,每組至少有5人,那余下的2人如何處理,前面2組各為6人,還是在8組中任意選擇兩組為6人。不同的分組方案各應該用什么樣的編程思維方法來解決。程序設計邏輯如圖1所示:
(2)自定義小組總數,每小組人數隨機分配。如何將班級分成指定的組數以及人數,同樣將出現的樣本一次性分組分完,可能出現樣本不夠、樣本有余等情況。逐步分析引導學生明確項目需求,以及如何采用計算機編程的方法來解決問題。問題逐步拋出,不停深入拓展,使程序的功能越來越完善。在不知不覺中,學生慢慢會發現代碼量越寫越多,超出原先對自己編程能力的認知,自信心也逐步增強。
Python是時下非常值得學習的編程語言,也是從事數據分析和機器學習相關工作的重要工具,是統計學專業的學生必須掌握的一個數據科學利器。在統計學專業的Python程序設計課程教學實踐中,建議采用“最少必要知識”的理念,在實踐過程中完善知識體系,不斷提高、不斷掌握,切勿等待理論知識“萬事俱備”后,才開始動手進行實踐。積極采用案例教學法,將身邊學生感興趣的教學案例搬到課堂教學中來作為程序的編寫教學和數據分析的案例等,同時在學習方式方法上允許學生多多探討,對相對陌生的問題大膽嘗試著解決,如鼓勵學生建立互助組等。在考核評價方式上也根據項目案例引導以及學生互助的學習形式而適當改變,相應地調整考核成績比例,更好更科學地適應教學方式方法和教學手段的創新和改進,使評價考核機制更為有效地激勵學生自主學習和積極探索,從而提高教學質量和教學水平。