劉永芬 賴曉燕 李盼盼
摘? 要: 人工智能重在實現機器智能,實現的主要方式是機器學習。基于Python簡潔及其強大的人工智能算法庫,將機器學習方法融入Python課程的教學中顯得尤為重要。讓學生領悟方法原理并學會使用,是教學的重點和難點。提出了一種直觀簡易的機器學習方法與Python課程相融合的案例教學方式,能幫助學生更深刻地掌握Python語言,為他們今后在企業(yè)中應用奠定基礎。
關鍵詞: Python; 案例教學; 人工智能; 機器學習
中圖分類號:G642? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)04-89-04
Abstract: Artificial intelligence focuses on the realization of machine intelligence, and the main way to realize it is machine learning. Because of the simplicity of Python and its powerful artificial intelligence algorithm library, it is very important to integrate the machine learning method into the teaching of Python course. It is the key and difficult point of teaching to let students understand the principle of method and learn to use it. In this paper, a case-teaching method combined intuitive and simple method of machine learning with Python course is put forward, which can help students to master Python language more deeply and lay a foundation for them to use in enterprises in the future.
Key words: Python; case-teaching; artificial intelligence; machine learning
0 引言
當前各國的人工智能政策、計劃層出不窮。2017年,我國發(fā)布了具有里程碑意義的人工智能發(fā)展計劃——《新一代人工智能發(fā)展規(guī)劃》[1]。2018 年,教育部制訂了《高等學校人工智能創(chuàng)新行動計劃》,為我國新一代人工智能發(fā)展提供了戰(zhàn)略支撐。美國布魯格林研究機構發(fā)布報告認為,現在的企業(yè)都是人工智能企業(yè)。歐盟計劃在人工智能領域設立基準,并發(fā)布人工智能倫理指導框架。自此,作為最適合人工智能開發(fā)研究工作的 Python 語言受到愈多業(yè)界人士的關注。目前,高等教育培養(yǎng)計劃中面向計算機專業(yè)開設的主要編程語言有C、C++、Java等。在人工智能背景下,Python程序設計在應用型本科教育中有著重要的地位。
在大數據、云計算、人工智能等技術浪潮的推動下,當代計算機專業(yè)的應用型本科生除了要具備基本計算機編程技能,還需要涉獵一定的機器學習方法,以期解決工作中遇到的非通用性計算問題。從目前人才市場的需求來看,具有扎實專業(yè)基礎和人工智能應用經驗的復合型人才更加受到青睞。
然而人工智能、機器學習等熱門詞匯對大部分沒有實踐經驗的學生來說,還是比較抽象。人工智能教育尚未全面融入基礎教育各學科的教學之中[2]。因此,從應用型人才培養(yǎng)的角度,在Python課程中引入機器學習方法,作為案例教學是不可避免的趨勢。
1 Python課程的教學重點
1.1 Python的特點
Python作為計算機專業(yè)的選修課程,課程設置通常安排在C/C++課程之后。學生在有一定編程基礎的情況下,對編程語言基本的數據類型已經有較深刻地認識。課程伊始,有必要著重描述語言的特點,以及與其他高級語言之間的區(qū)別,讓學生對課程有初步的認識,有助于形成系統(tǒng)的編程思維體系。
Python語言簡潔易懂,有完善的程序包管理系統(tǒng)pip命令,可便捷地安裝與編寫程序包。Python提供了豐富的數據分析模塊,以高度重用機制、不同平臺的可移植性、內置功能強大的標準模塊、可與其他語言混合編程,其應用領域相當廣泛,涵蓋游戲編程、圖像處理、人工智能、自然語言分析等。
對比時下常用的計算機語言,如圖1所示,在TIOBE開發(fā)語言2018年12月的排行榜[3]中,我們發(fā)現Python語言的熱門程度從之前的第四上升到了第三,創(chuàng)歷史評價指標新高。
1.2 基本語法
由于新版本的Python語言與低版本的部分不兼容,建議在教學環(huán)節(jié)采用新版本Python3的語法結構,常見的數據類型有元組、列表、字典、集合,元組內部元素寫在小括號中,元素間用逗號分隔,每個元素的類型可以不同,但是元素不能修改;列表是有序集合,屬于“序列”類型,元素寫在方括號中,元素的類型可以不相同,可以嵌套使用;字典用大括號標識,是一種映射類型,內部元素以鍵值對形式出現,關鍵字(key)必須是不可變類型;集合是一個無序不重復元素的序列,用set()函數或者大括號創(chuàng)建集合,可用于刪除重復元素,各數據類型及其實例如表1所示。
對于計算機專業(yè)的學生而言,在具有C++語言基礎的情況下,學習Python中的set、dictionary,由于它們與C++標準模板庫STL中的set、map容器具有類似的功能,在教學環(huán)節(jié)可以進行知識點回顧,使學生更容易理解,觸類旁通,易學易用。
1.3 機器學習方法概述
機器學習本身是一項通過計算手段,利用經驗改善系統(tǒng)自身的技術,其目的是基于經驗數據運用學習算法產生數據模型,并對新的情況提供相應的判斷。機器學習方法有很多,其中比較經典的有聚類分析方法、分類方法、關聯分析方法、序列模式分析方法等。
在Python課程教學過程中,以聚類方法為例,由于K-means、DBSCAN是十分簡單的聚類算法,原理非常簡明清晰,可以作為教學案例,以下給出這兩種方法的簡潔描述。
⑴ K-means聚類算法
K-means聚類[4]是常見的劃分方法,是1967年MacQueen首次提出的,常用誤差平方和函數作為聚類準則函數,在簇與簇之間區(qū)別明顯的情況下,聚類效果最好。K-means將包含n個數據對象集合劃分成k份(k?n),其中每個劃分代表一個聚類,算法描述如表2所示。
表2? K-means算法描述
[輸入:聚類個數k,包含n個樣本點的數據對象集合 輸出:滿足方差最小標準的k個聚類 步驟 描述 Step1 任意選擇k個樣本點作為初始聚類中心。 Step2 對于其他數據對象采用距離公式度量其到這k個初始聚類中心的相似度,分別將它們分配到最相似的聚類中。 Step3 重新計算聚類中心。 Step4 循環(huán)步驟Step2 Step3,直到標準測度函數開始收斂為止。 ]
⑵ DBSCAN聚類算法
DBSCAN算法的顯著特點是能夠發(fā)現空間中任意形狀的簇,基于密度的聚類方法通常將簇視為空間中被低密度區(qū)域分割開的稠密對象區(qū)域。DBSCAN是一種基于高密度連通區(qū)域的聚類方法,它將簇定義為密度相連的點的最大集合,將具有高密度的區(qū)域劃分為簇,具體算法描述如表3所示。
正整數MinPts,領域半徑ε 輸出:簇集合C={C1,C2,…,Ck} 步驟 描述 Step1 選取一個樣本對象p,根據參數MinPts和領域半徑ε提取所有從p密度可達的對象。 Step2 如果p是核心對象,則從p密度可達的所有對象被標記為當前類,并從它們進一步擴展。 Step3 如果p是邊界對象Step1,Step2,直到找到所有完整的聚類簇。 Step4 選擇新的起始對象開始擴展,得到下一個聚類簇,直到所有對象都被標記為止。 ]
2 案例教學在Python課程中的應用
根據Python課程的特點,鼓勵學生開發(fā)一些小的項目,在實踐中增長見識。現有的教材對基礎語法和程序設計結構介紹得較多,人工智能方法應用的案例也相對復雜,很容易讓學生感到抽象。由于實驗課時有限,要在較短的實驗課時中掌握更多的知識,還需精心設計實驗內容,同時建議增加實踐課時,在實踐教學環(huán)節(jié)引入案例,幫學生增強對人工智能算法的深刻理解。
通過案例教學,將機器學習方法進一步向實際應用推廣。在實際的應用中,以電子商務領域為例,通過聚類分析發(fā)現具有相似瀏覽行為的客戶,劃分不同的客戶群,為后續(xù)分析同類客戶的共同特征,刻畫客戶群的購買模式提供依據,進而可以更好地幫助電商平臺了解客戶,向客戶提供更適合的服務。
2.1 常用標準模塊
Python中機器學習相關的標準模塊有numpy,pandas,scipy,matplotlib,sklearn等。在實踐教學環(huán)節(jié),可以著重介紹幾個機器學習方法應用常用的標準模塊,如numpy,pandas,sklearn等。numpy是一個高性能的科學計算和數據分析的基礎包,可用于存儲和處理大型矩陣,比Python自身的嵌套列表結構要高效得多。sklearn是廣泛應用的重要機器學習庫,其中封裝了大量的機器學習算法,如分類、聚類、回歸、降維等,還包含了監(jiān)督學習、非監(jiān)督學習、數據變換三大模塊。matplotlib是一個繪圖庫,可在跨平臺上生成直方圖、功率譜、柱狀圖、誤差圖、散點圖等圖像,提供了高質量的效果呈現。
2.2 構建案例數據集
每一位客戶的特征數據,可看作是空間上的一個數據點。簡單起見,我們可以通過sklearn快速生成二維空間的樣本點,構成聚類分析的數據集,調用make_moons方法生成月牙型離散數據,通過make_blobs方法生成團狀離散數據樣本點,從方法的名稱上很容易理解其功能,也體現了Python標準庫方法的直觀和良好的閱讀感知。構建數據集方法實例如下:
2.3 實現與結果評價
通過導入sklearn.cluster 中的K-means類,創(chuàng)建對象調用fit_predict方法實現k-means方法在數據集中的聚類,程序簡單易懂。其中創(chuàng)建K-means類對象常用的參數有:n_clusters表示最終K-means方法的聚類數量。random_state表示隨機生成器的種子,和初始化中心有關。max_iter表示每次迭代的最大次數。Tol為容忍的最小誤差,當誤差小于tol,程序退出迭代。具體程序如下:
3 結束語
本文通過在Python課程中引入案例,直觀地對比兩種不同機器學習方法呈現的效果,有助于學生將理論與實際,實際與時代背景相結合,從而提高學習熱情,以期達到人工智能領域人才培養(yǎng)的要求。Python語言的特點決定了這門課程需要在教學內容上與時代接軌,教學方法上采用以案例導入的形式避免了枯燥的敘述,將理論融入到實際的熱點話題中,提高了學生的學習積極性。因此,以案例促進Python課程與人工智能領域的融合,具有一定的現實意義。希望本文能為計算機類課程的教學人員提供新的教學思路和方法,從而有利于人工智能思想的傳播和發(fā)展。
參考文獻(References):
[1] 新一代人工智能發(fā)展規(guī)劃[Z].國發(fā)[2017]35號.
[2] 王婷婷,任友群.人工智能時代的人才戰(zhàn)略《高等學校人工智能創(chuàng)新行動計劃》解讀之三[J].遠程教育雜志,2018.5:52-59
[3] TIOBE Programming Community Index[EB/OL].https://www.tiobe.com/tiobe-index/.
[4] 王麗娟,郝志峰等.K-means聚類算法的實例教學研究[J]計算機教育,2016.8:152-157