• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于機器學習的初中人工智能編程教學實踐
      ——以利用線性回歸預測某城市房價項目為例

      2022-08-29 02:21:32付東升
      現(xiàn)代信息科技 2022年12期
      關鍵詞:線性住宅人工智能

      付東升

      (廈門英才學校,福建 廈門 361000)

      0 引 言

      人臉識別、自動駕駛、智能客服、短視頻推薦、金融風控、智慧醫(yī)療、智慧農(nóng)業(yè)、機器人技術等,這些都是人工智能在各個行業(yè)中的具體應用。人工智能涉及的范圍較廣,知識難度較大,根據(jù)目前人工智能叢書中所提出的內(nèi)容,主要以了解人工智能在生活中的應用為主,或結合給定功能的開源硬件,體驗人工智能項目的應用,往往不能真正理解人工智能中某個項目的原理,代碼編程項目設計更是無從下手,因此,本文嘗試以線性回歸項目為基礎,開展項目化的人工智能教學,結合初中生認知水平,從原理的講解到代碼的編寫,以期給中學人工智能教學以借鑒作用。

      1 課堂實踐

      機器學習分為監(jiān)督學習、無監(jiān)督學習和強化學習,其中監(jiān)督學習又包含回歸問題和分類問題,線性回歸是機器學習中的經(jīng)典模型。初一學生對人工智能已有初步的了解和接觸,學生已達到學習機器學習基礎知識的認知水平,本節(jié)將應用Pycharm 編程軟件,通過Python 語言嘗試對“某城市房價問題”這一線性回歸問題做編程嘗試,學生在實際代碼的編寫過程中探究線性回歸的基本原理,切身體驗分析問題、設計算法、編寫程序、調(diào)試運行的過程。

      2 項目方案設計

      教師圍繞計算機解決問題的一般過程:分析問題、設計算法、編寫程序、調(diào)試運行與“導入相關的工具包、加載數(shù)據(jù)集、模型訓練和預測、預測結果可視化”四個步驟進行教學活動,具體教學過程有以下幾個方面。

      2.1 聯(lián)系生活分析線性回歸問題

      2.1.1 提出問題

      中國人一般都有家的情節(jié),我們每天住在寬敞的房子中,有沒有想過能住在漂亮的房子里,是因為父母辛勤的工作?回到問題上,現(xiàn)已知:20 世紀70年代中期,某城市郊區(qū)住宅的一些數(shù)據(jù)點,比如犯罪率、當?shù)胤慨a(chǎn)稅率等。

      教師提出問題:假設你是一個房地產(chǎn)商人,根據(jù)給定的一組關于郊區(qū)住宅的數(shù)據(jù)點,如圖1所示,你能夠預測出其他住宅的售價為多少會更合適嗎

      圖1 郊區(qū)住宅數(shù)據(jù)點

      設計意圖:在情感態(tài)度價值觀上,學生能更理解父母工作的不易,只有付出才有回報,同時基于問題的教學法開篇,拋出回歸問題案例,激發(fā)學生興趣。

      2.1.2 認識數(shù)據(jù)集中存有哪些數(shù)據(jù)

      (1)load_boston 數(shù)據(jù)集是以字典(Dictionary)的方式存儲數(shù)據(jù),使用以下三行代碼,可輸出load_boston 數(shù)據(jù)集中所含有的“鍵”,輸出結果如圖2所示。

      圖2 load_boston 數(shù)據(jù)集中所含有的“鍵”

      代碼:

      設計意圖:引導學生深度挖掘某城市房價數(shù)據(jù),掌握其采用字典存儲方式的意義,即便于通過“鍵”查找其“值”,從而理解數(shù)據(jù)集中存儲的每一個“鍵”的含義。

      數(shù)據(jù)集含有數(shù)據(jù)(506 個樣本,14 個屬性):主要為:數(shù)據(jù)(‘data’),目標價格(‘target’),特征名稱(‘feature_names’)。

      (2)引導學生思考數(shù)據(jù)集中字典的“值”是多少呢?應用一行代碼,可以輸出完整的某城市數(shù)據(jù)集,輸出結果如圖3所示。

      圖3 數(shù)據(jù)集中的數(shù)據(jù)

      代碼:

      print(dataset)

      設計意圖:學生理解字典存儲數(shù)據(jù)意義的基礎上,輸出完整數(shù)據(jù),清楚認識“鍵”和其所對應的“值”,只有深度了解數(shù)據(jù)集中的數(shù)據(jù),才能便于調(diào)用數(shù)據(jù)。

      2.2 設計算法理解線性回歸原理

      (1)我們提取住宅平均房間數(shù)這一個特征(rooms)作為橫坐標值,根據(jù)值找到數(shù)據(jù)集所對應的值,也就是住宅的價格(price),形成散點圖如圖4所示。

      圖4 住宅平均房間數(shù)(x 值)與住宅所售價格(y 值)散點圖

      設計意圖:數(shù)據(jù)集中有13 個特征,可引導學生從一個特征(住宅平均房間數(shù)rooms)入手,找出住宅平均房間數(shù)與房價的關系,即從特殊到一般的科學探究方法。

      (2)觀察這個散點圖,會發(fā)現(xiàn)一些規(guī)律,大概率是住宅平均房間數(shù)越多,住宅的價格越高,此趨勢可用一次線性函數(shù)=·+(輸入特征為住宅平均房間數(shù),輸出標記為住宅所售價格,是與軸的截距)擬合,如圖5所示。

      圖5 一次線性函數(shù)

      設計意圖:這就是最簡單的線性回歸模型。我們要做的就是利用已有數(shù)據(jù),去學習得出這條直線,擬合出這條直線,則對于橫坐標(rooms)的任意取值,我們都可以找到直線上對應的值,也就是模型的預測值(price),當然從圖5中能看出存在一定的誤差,這就需要學有余力的同學去深度思考,如何減小誤差。

      2.3 編寫程序探究線性回歸過程

      2.3.1 步驟一:導入相關的工具包

      # 使用 sklearn 內(nèi)置的房價數(shù)據(jù)集,load_boston 是加載數(shù)據(jù)集的函數(shù)

      from sklearn.datasets import load_boston

      # 使用sklearn 中的 train_test_split 劃分數(shù)據(jù)集

      from sklearn.model_selection import train_test_split

      # 使用 sklearn 中的直線回歸模型進行預測

      from sklearn.linear_model import LinearRegression

      # 使用 matplotlib 模塊中的 pyplot 函數(shù)進行數(shù)據(jù)可視化

      import matplotlib.pyplot as plt

      設計意圖:基于上述設計算法和線性回歸的原理,對照講解sklearn 數(shù)據(jù)集train_test_split 函數(shù)、LinearRegression 直線回歸、matplotlib 模塊的作用。sklearn 是內(nèi)置于Pycharm編程環(huán)境中的數(shù)據(jù)集,只需加載數(shù)據(jù)集即可。

      典型問題:如何劃分“測試集”和“訓練集”?

      解決方法:在機器學習中,我們通常將原始數(shù)據(jù)按照比例分割為“測試集”和“訓練集”,train_test_split 函數(shù)就是起到劃分“測試集”和“訓練集”的作用。

      2.3.2 步驟二:加載數(shù)據(jù)集

      # 加載房價數(shù)據(jù)集,返回特征X 和標簽y

      X, y = load_boston(return_X_y=True)

      # 只取第6 列特征RM:住宅平均房間數(shù)

      X = X[:,5:6]

      # 劃分為訓練集和測試集,測試集取20%

      X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2, random_state=2020)

      設計意圖:采用從特殊到一般的科學探究方法,從13個特征中,只取RM 住宅平均房間數(shù)這一個特征,找出其與住宅價格的關系,測試集取20%時,觀察程序運行后的可視化結果。

      典型問題:每次運行得到不同的結果,主要是分割的“測試集”和“訓練集”并不相同問題。

      解決方法:同樣的算法模型在不同的“測試集”和“訓練集”上運行的效果并不一樣。如果每次sklearn 分割的“測試集”和“訓練集”都不相同,那么程序每運行一次,都會得到不同的結果,導致無法調(diào)參。此時加上random_state 以后就可以保證程序每次運行都分割一樣的“測試集”和“訓練集”,便于調(diào)參。

      2.3.3 步驟三:模型訓練和預測

      # 創(chuàng)建線性回歸對象

      regre = LinearRegression()

      # 使用訓練集訓練模型

      regre.fit(X_train, y_train)

      # 在測試集上進行預測

      y_pred = regre.predict(X_test)

      設計意圖:在理解應用線性回歸能預測住宅房價原理的基礎上,在程序中可直接調(diào)用LinearRegression 直線回歸。

      2.3.4 步驟四:預測結果可視化

      plt.scatter(X_test, y_test, color=’blue’)

      # 畫線性回歸模型對測試數(shù)據(jù)的擬合曲線

      plt.plot(X_test, y_pred, color=’red’)

      # 顯示繪圖結果

      plt.show()

      # 打印斜率和截距

      print(‘斜率k:{}, 截距b:{}’.format(regre.coef_,regre.intercept_))

      設計意圖:引導學生觀察當測試集取20%,輸入房間數(shù)量為8 時,=·+函數(shù)圖像,其中斜率:[9.111 633 98],截距:-34.475 577 892 806 62,效果如圖6所示。

      圖6 測試集取20%時y=k·x+b 函數(shù)圖像

      設計意圖:引導學生觀察當測試集取80%,輸入房間數(shù)量為8 時,=·+函數(shù)圖像,其中斜率:[12.144 071 32],截距b:-53.322 051 223 109 96,效果如圖7所示。

      圖7 測試集取80%時y=k·x+b 函數(shù)圖像

      典型問題:測試集的取量,會影響=·+函數(shù)圖像的斜率和截距。

      解決方法:其他參數(shù)保持不變,只更改測試集取量,觀察會出現(xiàn)何種效果,學生提出測試集取量對=·+函數(shù)圖像的影響。

      # 打印斜率和截距

      print(‘斜率k:{}, 截距b:{}’.format(regre.coef_,regre.intercept_))

      x=int(input(‘請輸入住宅平均房間數(shù): ’))

      y=regr.coef_*x+regre.intercept_

      print(‘預測的住宅價格是:%s’%y)

      # 顯示繪圖結果

      plt.show()

      設計意圖:matplotlib 是Python 的繪圖庫,掌握應用其畫出圖形,實現(xiàn)數(shù)據(jù)可視化的方法。

      拓展延伸1:當測試集取量20%,輸入住宅平均房間數(shù)為8 時,運行程序后顯示:預測的住宅價格是:[38.417 493 97],當測試集取量80%,輸入住宅平均房間數(shù)為8 時,運行程序后顯示:預測的住宅價格是:[43.830 519 36],為何會出現(xiàn)不一樣的預測結果?

      拓展延伸2:只有住宅平均房間數(shù)這一個特征與住宅價格的關系,那13 個特征與住宅價格的關系會有什么預測結果呢?

      設計意圖:測試集的取量、住宅平均房間數(shù)都會對住宅價格產(chǎn)生影響,考慮到存在一定的誤差,為進一步學習均方誤差(MSE),均方根誤差(RMSE),平均絕對誤差(MAE)的方法來減小誤差做鋪墊。同時提出從13 個特征中只取住宅平均房間數(shù)這一個特征和住宅價格的關系,這是從一般到特殊的科學探究方法,我們從一個特征與住宅價格的關系中找到規(guī)律,把它應用到13 個特征與住宅價格的關系的研究中,這就是再從特殊到一般的探究過程。程序完整代碼如圖8所示。

      圖8 利用線性回歸預測某城市房價項目完整代碼

      2.4 調(diào)試運行提升解決問題能力

      問題1: 出現(xiàn)提示ModuleNotFoundError: No module named ‘sklearn’錯誤或者出現(xiàn)提示ModuleNotFoundError:No module named ‘matplotlib’錯誤

      解決方法:出現(xiàn)此問題的原因是沒有加載’sklearn’和’matplotlib’庫所導致的,以Pycharm 2020.3.3 版本為例,介紹Pycharm 軟件加載庫或模塊的方法:點擊左上角的File 后,選擇Settings 進入到設置頁面,如圖9所示。

      圖9 Pycharm 設置頁面

      選擇Project 下的Python Interpreter,此時右側能看到已安裝的庫或模塊,如圖10 所示。

      圖10 顯示已安裝庫或模塊

      在已安裝庫或模塊下方點擊“+”號,出現(xiàn)Available Packages頁面,輸入庫或模塊名稱后,點擊下方的Install Package,進行庫或模塊的安裝,如圖11 所示。

      圖11 搜索庫或模塊頁面

      問題2:Available Packages頁面顯示Nothing to show 或搜索sklearn 庫時不能出現(xiàn)sklearn 庫。

      解決方法:點擊Manage Repositories,默認有https://pypi.python.org/simple 鏡像源,可增加一些國內(nèi)的鏡像源,如清華:https://pypi.tuna.tsinghua.edu.cn/simple、阿里云:https://mirrors.aliyun.com/pypi/simple/、 豆 瓣:https://pypi.douban.com/simple/等鏡像源,如圖12 所示。

      圖12 添加國內(nèi)鏡像源

      此時再搜索sklearn 庫時,因作者添加了4 個鏡像源,則可能會出現(xiàn)4 個sklearn 庫,選擇其中一個安裝即可,如圖13 所示。

      圖13 多個源會出現(xiàn)多個sklearn 庫

      3 結 論

      本文分析的線性回歸模型是建立在一次函數(shù)=·+基礎上,一次函數(shù)是初中數(shù)學的學習內(nèi)容,應用數(shù)學知識與編程算法相結合去探究線性回歸經(jīng)典模型,既可以降低程序理解的難度,又可將教學重心放在線性回歸經(jīng)典模型的教學上,同時為學生提供使用不同學習方式再次深入理解一次函數(shù)的機會。學習線性回歸經(jīng)典模型有助于學生理解什么是機器學習,更重要的是走出與智能音箱、智能機器人等智能設備對話就理解為人工智能的全部這種誤區(qū)。

      教師圍繞計算機解決問題的一般過程:分析問題、設計算法、編寫程序、調(diào)試運行這種逐層遞進方式開展教學,結合線性回歸經(jīng)典模型的邏輯步驟,即“導入相關的工具包、加載數(shù)據(jù)集、模型訓練和預測、預測結果可視化”四個步驟,教學設計符合皮亞杰的認知發(fā)展理論和維果茨基的最近發(fā)展區(qū)理論,適應學生的認知發(fā)展水平、學生的學習是主動建構知識的過程,提升了學生計算思維等高階能力的培養(yǎng)。本次人工智能編程教學實踐仍處于初步嘗試階段,有部分內(nèi)容需要在后續(xù)教學實踐中不斷探索、完善。

      猜你喜歡
      線性住宅人工智能
      漸近線性Klein-Gordon-Maxwell系統(tǒng)正解的存在性
      Jaffa住宅
      線性回歸方程的求解與應用
      掛在“樹”上的住宅
      學生天地(2020年30期)2020-06-01 02:25:50
      MHS住宅
      A住宅
      2019:人工智能
      商界(2019年12期)2019-01-03 06:59:05
      二階線性微分方程的解法
      人工智能與就業(yè)
      數(shù)讀人工智能
      小康(2017年16期)2017-06-07 09:00:59
      庄浪县| 中阳县| 浙江省| 探索| 始兴县| 潍坊市| 定西市| 沾益县| 曲水县| 常德市| 万州区| 彰武县| 瓦房店市| 金阳县| 永靖县| 濉溪县| 鄂伦春自治旗| 噶尔县| 繁昌县| 龙口市| 九寨沟县| 宝兴县| 家居| 姚安县| 长治市| 丰镇市| 龙游县| 乡宁县| 会昌县| 元江| 外汇| 北海市| 乌什县| 翁源县| 古田县| 且末县| 寻甸| 横峰县| 常熟市| 江永县| 江油市|