




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第8章人工智能教學(xué)目標(biāo)熟悉人工智能基本概念和發(fā)展學(xué)派理解機器學(xué)習(xí)基本方法初步理解深度學(xué)習(xí)與人工神經(jīng)網(wǎng)絡(luò)理解大模型等人工智能概念8.1人工智能的基本概念8.1.1人工智能的定義AI是模擬、延伸人類智能的科學(xué)技術(shù)發(fā)展歷程:初期階段→知識時代→特征時代→數(shù)據(jù)時代核心問題:定義與算法8.1人工智能的基本概念8.1.2圖靈測試通過文字問答判斷機器是否具備人類智能2014年"尤金·古茲曼"首次通過測試8.1人工智能的基本概念8.1.3人工智能的發(fā)展與學(xué)派符號主義學(xué)派:基于邏輯推理(如專家系統(tǒng))行為主義學(xué)派:強調(diào)環(huán)境交互(如控制論機器人)連接主義學(xué)派:仿生神經(jīng)網(wǎng)絡(luò)(如深度學(xué)習(xí))8.2機器學(xué)習(xí)8.2.1機器學(xué)習(xí)的概念流程:數(shù)據(jù)預(yù)處理→模型訓(xùn)練→評價優(yōu)化工具:scikit-learn(分類、回歸、聚類等)8.2機器學(xué)習(xí)8.2.2機器學(xué)習(xí)的基本方法有監(jiān)督學(xué)習(xí):分類(KNN、SVM)、回歸(線性回歸)無監(jiān)督學(xué)習(xí):聚類(K-Means)、降維(PCA)案例:藥用植物分類、血糖預(yù)測、數(shù)據(jù)聚類與可視化某藥用植物由于原產(chǎn)地不同,藥性有所差異。在“藥材.csv”文件中記錄了原產(chǎn)地分別為A(分類代碼0)、B(分類代碼1)和C(分類代碼2)的藥用植物葉片數(shù)據(jù),包括葉長、葉寬、葉尖長和葉柄長數(shù)據(jù)(單位cm),局部數(shù)據(jù)如圖所示。用sklearn進行分類建模。
①引用機器學(xué)習(xí)工具包并讀入數(shù)據(jù)。importnumpyasnpimportpandasaspdfilename='./藥材.csv'data=pd.read_csv(filename)X=data.iloc[1:,:-1] #數(shù)據(jù)集習(xí)慣上用大寫形式,不含標(biāo)題行,前4列數(shù)據(jù)y=data.iloc[1:,-1] #標(biāo)簽習(xí)慣上用小寫形式,不含標(biāo)題行,最后一列為標(biāo)簽列②劃分?jǐn)?shù)據(jù)。將已知數(shù)據(jù)分成2組:訓(xùn)練集(60%)和測試集(40%)。fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.4)③訓(xùn)練建模。使用訓(xùn)練集來構(gòu)建相關(guān)特征的模型。fromsklearn.neighborsimportKNeighborsClassifierclf=KNeighborsClassifier(n_neighbors=3)clf.fit(X_train,y_train)④驗證調(diào)優(yōu)。使用測試集來驗證模型的表現(xiàn),通過調(diào)整參數(shù)或使用更多的特征來提升算法的性能。準(zhǔn)確率(Accuracy)用預(yù)測結(jié)果中正確預(yù)測的數(shù)量與樣本總數(shù)的比值表示。y_train_pred=clf.predict(X_train)y_test_pred=clf.predict(X_test)#預(yù)測模型的準(zhǔn)確率importsklearn.metricsprint('訓(xùn)練集',sklearn.metrics.accuracy_score(y_train,y_train_pred))print('測試集',sklearn.metrics.accuracy_score(y_test,y_test_pred))當(dāng)n_neighbors=3時,預(yù)測模型的準(zhǔn)確率如下:訓(xùn)練集0.9775280898876404測試集0.9333333333333333當(dāng)n_neighbors=7時,預(yù)測模型的準(zhǔn)確率如下:訓(xùn)練集0.9775280898876404測試集1.0⑤應(yīng)用預(yù)測。使用訓(xùn)練好的模型對未知數(shù)據(jù)進行預(yù)測。預(yù)測藥用植物葉片的葉長、葉寬、葉尖長和葉柄長數(shù)據(jù)分別為4.5、1.5、0.1、3.1的原產(chǎn)地。注意X_n的數(shù)據(jù)結(jié)構(gòu),即使只有一條測試記錄也要用二維列表(雙重方括號)。#未知數(shù)據(jù)X_n=[[4.5,1.5,0.1,3.1]]y_n=clf.predict(X_n)print('預(yù)測未知數(shù)據(jù)屬于標(biāo)簽',y_n)輸出結(jié)果如下:預(yù)測未知數(shù)據(jù)屬于標(biāo)簽[0]可知預(yù)測樣本屬于原產(chǎn)地A。臨床研究發(fā)現(xiàn),空腹血糖值與血液總膽固醇和甘油三酯兩項獨立指標(biāo)具有線性關(guān)系?!把菙?shù)據(jù).xlsx”文件中有135例臨床數(shù)據(jù),局部數(shù)據(jù)如圖8-3所示。用sklearn進行線性回歸建模。①引用機器學(xué)習(xí)工具包并讀入數(shù)據(jù)。importnumpyasnpimportpandasaspdfilename='血糖數(shù)據(jù).xlsx'data=pd.read_excel(filename)X=data.iloc[1:,:2].values.astype(float) #自變量,大寫,不含標(biāo)題行,前2列數(shù)據(jù)y=data.iloc[1:,2].values.astype(float)#因變量,小寫,不含標(biāo)題行②劃分?jǐn)?shù)據(jù)。將已知數(shù)據(jù)分成2組:隨機劃分訓(xùn)練集(90%)和測試集(10%)。fromsklearnimportmodel_selectionX_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,test_size=0.1,random_state=1)③訓(xùn)練建模。使用訓(xùn)練集來構(gòu)建相關(guān)特征的模型。fromsklearn.linear_modelimportLinearRegressionlinregTr=LinearRegression()linregTr.fit(X_train,y_train)#輸出線性回歸模型的截距和回歸系數(shù)print(linregTercept_,linregTr.coef_)輸出結(jié)果如下:5.133088271911451[0.200307010.32663484]即線性回歸模型可近似表達(dá)為多元線性方程y=0.200X0+0.327X1+5.133。④驗證調(diào)優(yōu)。使用測試集來驗證模型的性能。利用sklearn的metrics類中提供的r2_score、mean_squared_error和mean_absolute_error方法分別計算決定系數(shù)R2、均方誤差MSE和平均絕對誤差MAE。fromsklearnimportmetricsy_train_pred=linregTr.predict(X_train)y_test_pred=linregTr.predict(X_test)train_mse=metrics.mean_squared_error(y_train,y_train_pred)test_mse=metrics.mean_squared_error(y_test,y_test_pred)print('在訓(xùn)練集和測試集上的均方誤差分別為:{:.2f}和{:.2f}'.format(train_mse,test_mse))train_mae=metrics.mean_absolute_error(y_train,y_train_pred)test_mae=metrics.mean_absolute_error(y_test,y_test_pred)print('在訓(xùn)練集和測試集上的平均絕對誤差分別為:{:.2f}和{:.2f}'.format(train_mae,test_mae))predict_score=linregTr.score(X_test,y_test)print('用回歸模型自帶方法計算決定系數(shù)為:{:.2f}'.format(predict_score))predict_r2_score=metrics.r2_score(y_test,y_test_pred)print('用metrics類方法計算決定系數(shù)為:{:.2f}'.format(predict_r2_score))輸出結(jié)果如下:在訓(xùn)練集和測試集上的均方誤差分別為:0.08和0.04在訓(xùn)練集和測試集上的平均絕對誤差分別為:0.21和0.16用回歸模型自帶方法計算決定系數(shù)為:0.80用metrics類方法計算決定系數(shù)為:0.80⑤可視化輸出結(jié)果。使用matplotlib.pyplot對所劃分的測試集進行可視化結(jié)果比較,如圖所示,其中虛線為模型預(yù)測結(jié)果,實線為臨床血樣真實結(jié)果。importmatplotlib.pyplotaspltplt.plot(range(len(y_test_pred)),y_test_pred,'g--',label='y_test_pred')plt.plot(range(len(y_test)),y_test,'r',label='y_test')plt.show()
⑥應(yīng)用預(yù)測。使用訓(xùn)練好的模型對未知數(shù)據(jù)做預(yù)測。某患者血液總膽固醇和甘油三酯數(shù)據(jù)分別為8.9和2.3,預(yù)測其空腹血糖。注意X_n的數(shù)據(jù)結(jié)構(gòu),即使只有一條測試記錄也要用二維列表(雙重方括號)。#未知數(shù)據(jù)X_n=[[8.9,2.3]]y_n=linregTr.predict(X_n)print('預(yù)測未知數(shù)據(jù)空腹血糖為',y_n)輸出結(jié)果如下:預(yù)測未知數(shù)據(jù)空腹血糖為[7.6670808]圖測試集的模型預(yù)測結(jié)果與臨床血樣真實結(jié)果比較用sklearn機器學(xué)習(xí)聚類方法將下列6個數(shù)據(jù)點聚類:[1,2],[1.5,1.8],[3.5,2.8],[4.6,3.8],[1,0.6],[3.3,4.2],并預(yù)測[1.4,1.2]和[3.6,3.9]兩個數(shù)據(jù)點所屬的分類標(biāo)簽。importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.clusterimportKMeansX=np.array([[1,2],[1.5,1.8],[3.5,2.8],[4.6,3.8],[1,0.6],[3.3,4.2]])clf=KMeans(n_clusters=2)clf.fit(X)centers=clf.cluster_centers_ #兩組數(shù)據(jù)點的中心點labels=clf.labels_ #每個數(shù)據(jù)點所屬的分類標(biāo)簽print('兩組的中心點在:\n',centers)print('各數(shù)據(jù)點所屬分類標(biāo)簽:\n',labels)foriinrange(len(labels)):plt.scatter(X[i][0],X[i][1],c=('r'iflabels[i]==0else'b'))plt.scatter(centers[:,0],centers[:,1],marker='v',s=100)#預(yù)測predict=[[1.4,1.2],[3.6,3.9]]label=clf.predict(predict)foriinrange(len(label)):plt.scatter(predict[i][0],predict[i][1],c=('r'iflabel[i]==0else'b'),marker='x')
plt.show()輸出結(jié)果如下:兩組的中心點在:
[[3.83.6][1.166666671.46666667]]各數(shù)據(jù)點所屬分類標(biāo)簽:
[110010]8.3深度學(xué)習(xí)與人工神經(jīng)網(wǎng)絡(luò)8.3.1神經(jīng)網(wǎng)絡(luò)的基本概念結(jié)構(gòu):輸入層→隱藏層→輸出層激活函數(shù):ReLU、Sigmoid、tanh訓(xùn)練過程:前向傳播→損失計算→反向傳播8.3.2卷積神經(jīng)網(wǎng)絡(luò)(CNN)核心組件:卷積層→池化層→全連接層應(yīng)用:圖像識別(MNIST手寫數(shù)字分類)框架:TensorFlow/Keras實現(xiàn)模型構(gòu)建與訓(xùn)練(1)加載相關(guān)庫和數(shù)據(jù)集,配置模型參數(shù)。設(shè)定每批次128張圖像,將60000張訓(xùn)練集圖像分469批次進行訓(xùn)練;設(shè)定每批次32張圖像(默認(rèn)),將10000張測試集圖像分313批次進行測試。importtensorflowastffromtensorflow.keras.datasetsimportmnistfromtensorflow.keras.modelsimportSequentialfromtensorflow.keras.layersimportDense,Flatten,Conv2D,MaxPool2Dfromtensorflow.keras.utilsimportto_categoricalimportnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlib.imageasmpimg#配置學(xué)習(xí)率、批次大小、迭代次數(shù)等參數(shù)learning_rate=0.001batch_size=128#每批次訓(xùn)練圖像數(shù)epochs=10#加載MNIST數(shù)據(jù)集(需聯(lián)網(wǎng)下載)(x_train,y_train),(x_test,y_test)=mnist.load_data()(2)數(shù)據(jù)預(yù)處理。利用reshape函數(shù)將二維圖像(28×28像素)轉(zhuǎn)換為一維序列(784像素),然后將像素0~255的灰度值歸一化,對分類維度,將標(biāo)簽轉(zhuǎn)換為0~9的分類格式。x_train=x_train.reshape(x_train.shape[0],28,28,1)/255.0#整形成適合卷積網(wǎng)絡(luò)的輸入x_test=x_test.reshape(x_test.shape[0],28,28,1)/255.0y_train=to_categorical(y_train,num_classes=10)#將標(biāo)簽轉(zhuǎn)換為分類格式y(tǒng)_test=to_categorical(y_test,num_classes=10)(3)構(gòu)建Sequential神經(jīng)網(wǎng)絡(luò)模型。輸入層采用Conv2D二維卷積層,共28×28=784個神經(jīng)元(一維序列輸入),使用32個3×3的卷積核。然后依次連接2×2的MaxPool2D池化層、64核的Conv2D二維卷積層和2×2的MaxPool2D池化層,以Flatten展平層轉(zhuǎn)換后連接128個神經(jīng)元的Dense全連接層。其均以ReLU作為激活函數(shù)。最后連接10個神經(jīng)元的Dense輸出層,以softmax函數(shù)歸一化得到10個數(shù)字的概率分布。model=Sequential([Conv2D(32,kernel_size=(3,3),activation='relu',input_shape=(28,28,1)),#32個3×3的卷積核
MaxPool2D(pool_size=(2,2)), #2×2的池化層
Conv2D(64,kernel_size=(3,3),activation='relu'),#64個3×3的卷積核
MaxPool2D(pool_size=(2,2)), #2×2的池化層
Flatten(),#展平層,在卷積層和全連接層中間起轉(zhuǎn)換作用
Dense(128,activation='relu'), #全連接層
Dense(10,activation='softmax') #輸出層])(4)模型編譯。使用Adam優(yōu)化器,每步均輸出損失函數(shù)和準(zhǔn)確率用于模型評估。pile(optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate),loss='categorical_crossentropy',metrics=['accuracy'])(5)訓(xùn)練模型。迭代次數(shù)達(dá)到預(yù)定epochs時結(jié)束訓(xùn)練。model.fit(x_train,y_train,batch_size=batch_size,epochs=epochs,validation_data=(x_test,y_test))(6)評估模型。訓(xùn)練和測試的部分輸出結(jié)果如圖所示。test_loss,test_acc=model.evaluate(x_test,y_test)print(f'測試集準(zhǔn)確度:{test_acc}')(7)可視化測試。測試結(jié)果如圖所示。images=x_testlabels=y_testnum_rows=2#展示4個測試圖像,2行2列num_cols=2prediction_labels=np.argmax(model.predict(images),axis=1)fig,axs=plt.subplots(num_rows,num_cols,figsize=(2,2))foriinrange(num_rows*num_cols):row=i//num_colscol=i%num_colsaxs[row,col].imshow(images[i].reshape(28,28),cmap='Greys')axs[row,col].set_title(f"Label:{labels[i]},Prediction:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司搬家引流活動方案
- 公司滿減活動策劃方案
- 公司盛大慶典活動方案
- 公司組織插畫活動方案
- 公司簽單活動方案
- 公司程序員團建活動方案
- 公司職工聚會活動方案
- 公司終年慶晚宴策劃方案
- 公司放電影活動方案
- 公司清明節(jié)創(chuàng)意活動方案
- 荊州中學(xué)2024-2025學(xué)年高二下學(xué)期6月月考?xì)v史試卷
- 2025-2030年中國婚慶產(chǎn)業(yè)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2024-2025學(xué)年蘇教版四年級下學(xué)期期末測試數(shù)學(xué)試卷(含答案)
- 2025年新高考2卷(新課標(biāo)Ⅱ卷)英語試卷
- 2025年中考化學(xué)必考要點知識歸納
- 三年級語文下冊全冊重點知識點歸納
- 公路養(yǎng)護材料管理制度
- JG/T 330-2011建筑工程用索
- 單位消防培訓(xùn)課件教學(xué)
- 項目可行性研究報告風(fēng)險管理與應(yīng)急措施制定策略
- 2024年湖北省初中學(xué)業(yè)水平考試地理試卷含答案
評論
0/150
提交評論