




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第7章人工智能與機器學習實驗方法通過Python第三方庫Scikit-learn進行機器學習中回歸任務(wù)和分類任務(wù)的相關(guān)實踐通過原生Python代碼及可視化過程,理解梯度下降方法的原理實驗要求(1)使用Scikit-learn庫的LinearRegression模型對糖尿病數(shù)據(jù)集進行一元線性回歸建模,并對結(jié)果進行評估。(2)使用Scikit-learn庫的LogisticRegression模型對鳶尾花數(shù)據(jù)集進行多分類預測,并對結(jié)果進行評估。(3)通過原生Python代碼,利用生成數(shù)據(jù)集,學習和理解梯度下降算法。(4)理解欠擬合與過擬合:通過回歸建模實驗,掌握欠擬合與過擬合的概念,能夠通過訓練集和測試集的誤差分析,識別并區(qū)分兩者的表現(xiàn)。實驗準備—創(chuàng)建編程環(huán)境①使用VSCode打開文件夾,為存儲項目文件做好準備②選擇Python解釋器③進入VSCode終端(Ctrl+`),創(chuàng)建、激活、安裝虛擬環(huán)境python-mvenv.venv(創(chuàng)建虛擬環(huán)境).venv\Scripts\activate(激活虛擬環(huán)境)pipinstallscikit-learn(安裝Scikit-learn庫)pipinstallmatplotlib(安裝Matplotlib庫)pipinstallseaborn(安裝Seaborn庫)importsklearnimportmatplotlib.pyplotaspltimportseabornassns實驗準備—創(chuàng)建編程環(huán)境①使用VSCode打開文件夾,為存儲項目文件做好準備②選擇Python解釋器(Anacondabase)importsklearnimportmatplotlib.pyplotaspltimportseabornassns實驗一:線性回歸(1)數(shù)據(jù)加載與探索。加載糖尿病數(shù)據(jù)集,并了解糖尿病數(shù)據(jù)集中的各個特征(如age、bmi、bp等)以及目標變量(糖尿病的疾病進展)。(2)數(shù)據(jù)集劃分。選擇數(shù)據(jù)集中的一個特征(例如,使用bmi或s5特征)和目標變量(糖尿病的疾病進展),并將數(shù)據(jù)劃分為訓練集和測試集,準備進行一元線性回歸分析建模。(3)模型訓練與評估。使用LinearRegression類進行一元線性回歸建模,然后使用測試集進行預測,并計算模型的R2和MSE,評估模型的性能。(4)結(jié)果分析。分析該模型的R2,評估該特征對目標變量的預測效果。Scikit-learnScikit-learn庫基于Numpy、Scipy、Pandas、Matplotlib、Seaborn等開發(fā),是主流的開源機器學習庫,封裝了大量經(jīng)典及最新的機器學習模型,并提供案例和數(shù)據(jù)。Scikit-learn庫高度集成、并做了易用性的封裝(統(tǒng)一API)支持機器學習全過程數(shù)據(jù)集數(shù)據(jù)預處理劃分數(shù)據(jù)集機器學習算法模型評估(1)加載數(shù)據(jù)集序號數(shù)據(jù)集名稱調(diào)用方式數(shù)據(jù)描述1鳶尾花數(shù)據(jù)集load_iris()多分類任務(wù)數(shù)據(jù)集2波士頓房價數(shù)據(jù)集load_boston()經(jīng)典回歸任務(wù)數(shù)據(jù)集3糖尿病數(shù)據(jù)集load_diabetes()經(jīng)典回歸任務(wù)數(shù)據(jù)集4手寫數(shù)字數(shù)據(jù)集load_digits()多分類任務(wù)數(shù)據(jù)集5乳腺癌數(shù)據(jù)集load_breast_cancer()簡單經(jīng)典的二分類任務(wù)數(shù)據(jù)集6體能訓練數(shù)據(jù)集load_linnerud()經(jīng)典多變量回歸任務(wù)數(shù)據(jù)集fromsklearn.datasetsimportload_diabetesdiabetes=load_diabetes()查看數(shù)據(jù)集print(diabetes.keys())dict_keys(['data','target','frame','DESCR','feature_names','data_filename','target_filename','data_module'])演示JupyterNotebook文件字段含義示例data特征數(shù)據(jù),通常是一個NumPy數(shù)組,表示每個樣本的特征X=diabetes.datatarget目標數(shù)據(jù),通常是一個NumPy數(shù)組,表示每個樣本的標簽值y=diabetes.targetfeature_names特征名稱,通常是一個列表,表示數(shù)據(jù)集中的每個特征diabetes.feature_namestarget_names目標數(shù)據(jù)名稱,通常用于分類問題,表示不同類別的標簽名稱diabetes數(shù)據(jù)集無該字段DESCR數(shù)據(jù)集的描述信息,包含關(guān)于數(shù)據(jù)集的詳細信息、特征含義等diabetes.DESCRshape獲取特征數(shù)據(jù)或者目標數(shù)據(jù)的維度(行數(shù)和列數(shù))diabetes.data.shapeprint(diabetes.DESCR)目標變量值:連續(xù)型數(shù)值,反映患者糖尿病病情在一年后的進展程度。數(shù)值越大,表示疾病惡化程度越高。(2)劃分數(shù)據(jù)集—留出法sklearn.model_selection.train_test_split(*arrays,
test_size=None,
train_size=None,
random_state=None,
shuffle=True,
stratify=None)參數(shù)說明arrays要劃分的數(shù)組或矩陣,可以將特征(X)和目標(y)合并在一起,也可以分開傳遞test_size測試集樣本的占比,不指定train_size參數(shù)時默認取值為0.25random_state隨機種子。在重復試驗時保持隨機種子不變,可以保證每次得到相同的劃分fromsklearn.model_selectionimporttrain_test_splitX=diabetes.data[:,2].reshape(-1,1)y=diabetes.targetX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=10)(3)建模、訓練及預測導入模型類創(chuàng)建模型訓練和預測線性回歸fromsklearn.linear_modelimportLinearRegressionmodel=LinearRegression()model.fit(X_train,y_train)y_predict=model.predict(X_test)邏輯回歸fromsklearn.linear_modelimport
LogisticRegressionmodel=LogisticRegression()支持向量機from
sklearn.svmimport
SVCmodel=SVC(C=1,kernel='linear')(4)評估模型回歸模型的評估指標均方損失誤差R2:模型解釋目標變量方差的比例fromsklearn.metricsimportmean_squared_error,r2_score
#計算MSEmse=mean_squared_error(y_test,y_predict)#計算R2r2=r2_score(y_test,y_predict)拓展練習(1)選擇另一個特征屬性建模,并對比預測效果。(2)嘗試使用多元線性回歸建模(如BMI+s5),對比預測效果。實驗報告要求根據(jù)以下提綱對本實驗過程中的關(guān)鍵收獲與遇到的挑戰(zhàn)進行總結(jié),并撰寫實驗報告。(1)實驗過程總結(jié)。簡述數(shù)據(jù)加載、預處理、建模及評估過程中的關(guān)鍵步驟。總結(jié)模型的訓練效果、測試結(jié)果。(2)對模型性能的思考。分析訓練后的模型的R2及其他評估指標,探討模型擬合效果是否理想。如果模型擬合效果不佳,分析其原因。(3)對回歸分析的理解。闡述對于糖尿病數(shù)據(jù)集而言,能否通過回歸模型發(fā)現(xiàn)潛在的疾病進展規(guī)律,或者在實際醫(yī)療數(shù)據(jù)分析中如何運用這些技巧。(4)通過拓展練習1、2總結(jié)特征選擇的重要性。實驗2:邏輯回歸(多分類問題)(1)數(shù)據(jù)加載與探索。加載鳶尾花數(shù)據(jù)集,并了解鳶尾花數(shù)據(jù)集中的各個特征以及目標變量。(2)數(shù)據(jù)集劃分。(3)建立LogisticRegression模型,對其進行訓練和測試。(4)模型訓練與評估,給出準確率、查準率、查全率等指標。(1)加載數(shù)據(jù)集序號數(shù)據(jù)集名稱調(diào)用方式數(shù)據(jù)描述1鳶尾花數(shù)據(jù)集load_iris()多分類任務(wù)數(shù)據(jù)集2波士頓房價數(shù)據(jù)集load_boston()經(jīng)典回歸任務(wù)數(shù)據(jù)集3糖尿病數(shù)據(jù)集load_diabetes()經(jīng)典回歸任務(wù)數(shù)據(jù)集4手寫數(shù)字數(shù)據(jù)集load_digits()多分類任務(wù)數(shù)據(jù)集5乳腺癌數(shù)據(jù)集load_breast_cancer()簡單經(jīng)典的二分類任務(wù)數(shù)據(jù)集6體能訓練數(shù)據(jù)集load_linnerud()經(jīng)典多變量回歸任務(wù)數(shù)據(jù)集fromsklearn.datasetsimportload_irisiris=load_iris()print(iris.keys())dict_keys(['data','target','frame','target_names','DESCR','feature_names','filename','data_module'])字段含義示例data特征數(shù)據(jù),通常是一個NumPy數(shù)組,表示每個樣本的特征X=iris.datatarget目標數(shù)據(jù),通常是一個NumPy數(shù)組,表示每個樣本的標簽值y=iris.targetfeature_names特征名稱,通常是一個列表,表示數(shù)據(jù)集中的每個特征iris.feature_namestarget_names目標數(shù)據(jù)名稱,通常用于分類問題,表示不同類別的標簽名稱iris.targe_namesDESCR數(shù)據(jù)集的描述信息,包含關(guān)于數(shù)據(jù)集的詳細信息、特征含義等iris.DESCRshape獲取特征數(shù)據(jù)或目標數(shù)據(jù)的維度(行數(shù)和列數(shù))iris.data.shape查看數(shù)據(jù)集查看數(shù)據(jù)集iris.feature_names['sepallength(cm)','sepalwidth(cm)','petallength(cm)','petalwidth(cm)']iris.target_namesarray(['setosa','versicolor','virginica'],dtype='<U10')iris.target.shape(150,)查看數(shù)據(jù)集(2)劃分數(shù)據(jù)集—留出法sklearn.model_selection.train_test_split(*arrays,
test_size=None,
train_size=None,
random_state=None,
shuffle=True,
stratify=None)參數(shù)說明arrays要劃分的數(shù)組或矩陣,可以將特征(X)和目標(y)合并在一起,也可以分開傳遞test_size測試集樣本的占比,不指定train_size參數(shù)時默認取值為0.25random_state隨機種子。在重復試驗時保持隨機種子不變,可以保證每次得到相同的劃分fromsklearn.model_selectionimporttrain_test_splitX=iris.data[:,[2,3]]y=iris.targetX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=10)(3)建模、訓練及預測導入模型類創(chuàng)建模型訓練和預測線性回歸fromsklearn.linear_modelimportLinearRegressionmodel=LinearRegression()model.fit(X_train,y_train)y_predict=model.predict(X_test)邏輯回歸fromsklearn.linear_modelimport
LogisticRegressionmodel=LogisticRegression()支持向量機from
sklearn.svmimport
SVCmodel=SVC(C=1,kernel='linear')邏輯回歸模型邏輯回歸:一種線性模型,用于分類任務(wù),根據(jù)現(xiàn)有數(shù)據(jù)為分類邊界線建立回歸方程,以此進行分類邏輯回歸通過Sigmoid函數(shù)將線性回歸的輸出映射為一個介于0和1之間的概率值,從而確定屬于某個類別的概率,并據(jù)此進行分類。Sigmoid函數(shù)wx+b>0wx+b<0wx+b=0邏輯回歸模型LogisticRegression采用一對多策略(OvR)處理多分類問題測試樣本分類器setosa-非setosa分類器virginica-非virginica分類器versicolor-非versicolorP(setosa)P(非)P(非)P(versicolor)非setosavirginicaversicolor0.20.70.6P(virginica)P(非)one-versus-rest(4)模型評估評估指標/工具調(diào)用方法說明準確率(Accuracy)fromsklearn.metricsimportaccuracy_scoreaccuracy_score(y_true,y_pred)判定正確的樣本數(shù)占樣本總數(shù)的比例查準率(Precision)fromsklearn.metricsimportprecision_scoreprecision=precision_score(y_true,y_pred)從預測的角度,預測為正類的樣本中實際為正類的比率,衡量命中正類的能力查全率(Recall)fromsklearn.metricsimportrecall_scorerecall=recall_score(y_true,y_pred)從實際發(fā)生的角度,計算實際為正類的樣本被正確判定的比率,衡量覆蓋正類的能力F1分數(shù)(F1-Score)fromsklearn.metricsimportf1_scoref1=f1_score(y_true,y_pred)用查準率與查全率計算調(diào)和平均值分類報告fromsklearn.metricsimportclassification_reportreport=classification_report(y_true,y_pred)對模型預測結(jié)果進行詳細分析,包括查準率、查全率、F1分數(shù)等混淆矩陣(ConfusionMatrix)fromsklearn.metricsimportconfusion_matrixcm=confusion_matrix(y_true,y_pred)展示模型真實標簽和預測標簽之間的關(guān)系多分類問題增加average=None參數(shù)得到每個類別的獨立指標fromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportprecision_score,recall_scorefromsklearn.metricsimportconfusion_matrix,classification_report#計算模型的準確率accuracy=accuracy_score(y_test,y_predict)print(f'Accuracy:{accuracy:.2f}')precision=precision_score(y_test,y_predict,average=None)print(precision)recall=recall_score(y_test,y_predict,average=None)print(recall)#打印分類報告,顯示精度、召回率和F1分數(shù)print(classification_report(y_test,y_predict,target_names=iris.target_names))拓展練習(1)嘗試使用sepallength(cm),sepalwidth(cm)建模,對比模型指標。拓展練習(2)從數(shù)據(jù)集中篩選出versicolor和virginica兩類樣本,選取sepallength(cm),sepalwidth(cm)特征進行二分類建模。輸出混淆矩陣,計算查準率、查全率、準確率,與混淆矩陣中的數(shù)據(jù)進行對比。X=iris.data[50:,[0,1]]y=iris.target[50:]提示1:versicolor和virginica兩類樣本為后100條數(shù)據(jù)提示3:Scikit-learn輸出混淆矩陣輸出如圖提示2:Scikit-learn默認將y取值大的類別視為正類(即類別2/virginica)實驗報告根據(jù)以下提綱對本實驗過程中的關(guān)鍵收獲與遇到的挑戰(zhàn)進行總結(jié),并撰寫實驗報告。(1)數(shù)據(jù)準備與可視化的方法。使用Scikit-learn庫加載鳶尾花數(shù)據(jù)集,了解該數(shù)據(jù)集;將數(shù)據(jù)集分為訓練集和測試集;使用花瓣特征進行數(shù)據(jù)可視化,展示不同鳶尾花品種的分布情況。(2)模型訓練與預測。創(chuàng)建并訓練邏輯回歸模型,使用訓練好的模型對測試集進行預測。(3)分類模型的評估方法。使用準確率、查準率、查全率、分類報告、混淆矩陣等多種評估指標/工具對模型進行性能評估,評估模型在各類別上的表現(xiàn),并識別可能的誤分類情況。(4)通過拓展練習1總結(jié)特征選擇的重要性。(5)通過拓展練習2總結(jié)混淆矩陣的使用。實驗3:Python原生代碼實現(xiàn)梯度下降(1)回歸問題的梯度下降可視化展示(2)二分類問題的梯度下降可視化展示梯度下降計算過程
邏輯回歸均方誤差損失函數(shù)交叉熵損失函數(shù)(1)回歸問題梯度下降假設(shè)有這樣一組數(shù)據(jù):X=[35,40,45,65,74,80,120,140,230,300,400,500,600]y=[150,170,190,200,224,245,320,400,640,780,900,1100,1300]。查看源代碼(2)分類問題的梯度下降數(shù)據(jù)集生成fromsklearn.datasetsimportmake_classification
X,y=make_classification(n_samples=200,#樣本數(shù)量n_features=2,#特征數(shù)量n_informative=2,#信息性特征數(shù)量,所有特征都包含有信息n_redundant=0,#不生成冗余特征n_classes=2,#二分類問題random_state=42)#設(shè)置隨機種子查看源代碼拓展練習(1)調(diào)節(jié)學習率、學習的輪數(shù)epochs,觀察梯度下降過程,思考學習率和epochs在訓練過程中所起到的作用。(2)使用scikit-learn庫中的make_regression生成回歸數(shù)據(jù),利用梯度下降算法進行建模,并進行可視化展示。fromsklearn.datasetsimportmake_regressionX,y=make_regression(
n_samples=100,#樣本數(shù)量
n_features=1,#特征數(shù)量
noise=10,#噪聲標準差
random_state=42#隨機種子)實驗報告根據(jù)以下提綱對本實驗過程中的關(guān)鍵收獲與遇到的挑戰(zhàn)進行總結(jié),并撰寫實驗報告。(1)回顧實驗過程。描述實驗的步驟,包括數(shù)據(jù)生成、分類器實現(xiàn)、梯度下降、可視化等。(2)結(jié)合代碼理解梯度下降法的原理。從初始化參數(shù)開始,通過計算預測值、計算誤差、計算梯度、更新參數(shù)這些步驟的迭代過程,理解梯度下降法在其中所起到的作用。(3)理解學習率的選擇。學習率決定了每次參數(shù)更新的步長,影響收斂速度和穩(wěn)定性。過低的學習率可能導致收斂速度過慢,需進行大量迭代。過高的學習率可能導致參數(shù)更新過大,錯過最優(yōu)解,甚至導致不收斂。結(jié)合實驗,體會學習率在模型收斂過程中的重要性。(4)梯度下降法可視化結(jié)果分析。通過可視化決策邊界的變化,可以直觀地觀察到模型在訓練過程中的學習進展和收斂情況。理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公路工程師路面工程路面質(zhì)量檢測考點預測
- 2025年長安銀行招聘試題及答案
- 2025年郵儲銀行招聘試題及答案
- 2025年銀行征信崗面試題及答案
- 廣東省陽江市陽東區(qū)市級名校2026屆中考押題數(shù)學預測卷含解析
- 2025年銀行遠程營銷面試題目及答案
- 2025年銀行員工競聘試題及答案
- 2025年銀行英語考試題型及答案
- 2025年銀行業(yè)務(wù)技能試題及答案
- 2025年專升本黑龍江試題及答案
- 焊工培訓課件
- 醫(yī)療器械一次性耗材醫(yī)用器械耗材投標供貨方案
- 2025-2030全球集裝箱綁扎系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 人教版小學英語單詞表(打印版)
- 2024年度科技成果轉(zhuǎn)化與應(yīng)用合同3篇
- 洗護用品導購員聘用合同
- xx公路與天然氣管道交叉方案安全專項評價報告
- 安徽皖信人力資源管理有限公司招聘筆試題庫2024
- 2025年中考歷史復習專項訓練:中國近代史材料題40題(原卷版)
- DB12∕T 849-2018 玫瑰香葡萄生產(chǎn)質(zhì)量安全控制技術(shù)規(guī)范
- 人教版小學英語3-6年級單詞(帶音標)
評論
0/150
提交評論