2025年P(guān)ython機器學習考試模擬試卷:Scikit-learn模型訓練_第1頁
2025年P(guān)ython機器學習考試模擬試卷:Scikit-learn模型訓練_第2頁
2025年P(guān)ython機器學習考試模擬試卷:Scikit-learn模型訓練_第3頁
2025年P(guān)ython機器學習考試模擬試卷:Scikit-learn模型訓練_第4頁
2025年P(guān)ython機器學習考試模擬試卷:Scikit-learn模型訓練_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2025年P(guān)ython機器學習考試模擬試卷:Scikit-learn模型訓練考試時間:______分鐘總分:______分姓名:______注意:請確保在運行以下代碼之前已經(jīng)安裝了`numpy`,`pandas`,`scikit-learn`庫。```pythonimportnumpyasnpimportpandasaspdfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_split,GridSearchCVfromsklearn.preprocessingimportStandardScaler,OneHotEncoderfromposeimportColumnTransformerfromsklearn.pipelineimportPipelinefromsklearn.linear_modelimportLogisticRegressionfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score,classification_report#1.加載Iris數(shù)據(jù)集iris=load_iris()X=iris.datay=iris.targetfeature_names=iris.feature_namestarget_names=iris.target_names#假設(shè)我們將前兩個特征視為數(shù)值型,第三個特征('petallength(cm)')視為類別型(雖然它本身是數(shù)值,但這里按題目要求處理)#為了模擬,我們手動修改一個值使其成為缺失值X[0,2]=np.nan#2.將數(shù)據(jù)轉(zhuǎn)換為DataFrame以便后續(xù)處理df=pd.DataFrame(X,columns=feature_names)df['species']=y#添加目標變量列df['petallength(cm)']=df['petallength(cm)'].astype('float')#確保是浮點型,以便處理缺失值#分離出數(shù)值型和類別型特征列numeric_features=['sepallength(cm)','sepalwidth(cm)','petallength(cm)']categorical_features=['petalwidth(cm)']#假設(shè)最后一個特征是需要編碼的類別特征#3.劃分數(shù)據(jù)集X_train,X_test,y_train,y_test=train_test_split(df[numeric_features+categorical_features],df['species'],test_size=0.3,random_state=42)#4.創(chuàng)建預(yù)處理步驟#對數(shù)值型特征進行標準化numeric_transformer=StandardScaler()#對類別型特征進行獨熱編碼categorical_transformer=OneHotEncoder(handle_unknown='ignore')#使用ColumnTransformer組合不同的預(yù)處理步驟preprocessor=ColumnTransformer(transformers=[('num',numeric_transformer,numeric_features),('cat',categorical_transformer,categorical_features)])#5.創(chuàng)建一個包含預(yù)處理和模型的Pipeline#選擇LogisticRegression作為基礎(chǔ)模型pipeline=Pipeline(steps=[('preprocessor',preprocessor),('classifier',LogisticRegression(solver='liblinear',max_iter=200))])#6.使用訓練數(shù)據(jù)訓練Pipelinepipeline.fit(X_train,y_train)#7.使用訓練好的Pipeline對測試集進行預(yù)測y_pred=pipeline.predict(X_test)#8.計算并輸出模型在測試集上的準確率accuracy=accuracy_score(y_test,y_pred)print(f"ModelAccuracy:{accuracy:.4f}")#9.輸出詳細的分類報告(包含precision,recall,f1-score)print("\nClassificationReport:")print(classification_report(y_test,y_pred,target_names=target_names))#10.現(xiàn)在我們嘗試使用GridSearchCV來尋找更好的參數(shù)#為LogisticRegression定義一個參數(shù)網(wǎng)格param_grid={'classifier__C':[0.01,0.1,1,10],'classifier__penalty':['l1','l2']#注意:liblinear只支持l1和l2}#創(chuàng)建GridSearchCV對象grid_search=GridSearchCV(pipeline,param_grid,cv=5,scoring='accuracy')#使用訓練數(shù)據(jù)運行網(wǎng)格搜索grid_search.fit(X_train,y_train)#11.輸出網(wǎng)格搜索找到的最佳參數(shù)組合print(f"\nBestparametersfoundbyGridSearchCV:{grid_search.best_params_}")#12.使用網(wǎng)格搜索找到的最佳模型進行預(yù)測,并計算準確率best_model=grid_search.best_estimator_y_pred_best=best_model.predict(X_test)accuracy_best=accuracy_score(y_test,y_pred_best)print(f"BestModelAccuracy:{accuracy_best:.4f}")#13.假設(shè)我們需要處理新的未知數(shù)據(jù),并使用最佳模型進行預(yù)測#創(chuàng)建一些新的模擬數(shù)據(jù)(注意:新數(shù)據(jù)的列名和順序必須與訓練數(shù)據(jù)一致)#并且類別型特征需要與訓練時使用的編碼器保持一致new_data=pd.DataFrame({'sepallength(cm)':[5.1,6.5],'sepalwidth(cm)':[3.5,3.0],'petallength(cm)':[1.4,5.2],#包含一個缺失值'petalwidth(cm)':['0.2','1.8']#假設(shè)類別型特征以字符串形式給出,需要編碼})#使用最佳模型(best_model)的predict方法進行預(yù)測#注意:best_model內(nèi)部已經(jīng)包含了preprocessor,所以直接傳入原始新數(shù)據(jù)即可y_pred_new=best_model.predict(new_data)print(f"\nPredictionsfornewdata:{y_pred_new}")print(f"Predictedspeciesnames:{best_model.predict(new_data)}")#14.(思考題,無需代碼)如果使用決策樹(RandomForestClassifier)作為分類器,并重復(fù)上述的Pipeline構(gòu)建、訓練、評估過程,#你認為在預(yù)處理步驟、模型訓練以及調(diào)優(yōu)方面,與使用LogisticRegression相比,會有哪些主要的不同或需要注意的點?```---試卷答案第4題解析思路:本題考察數(shù)據(jù)劃分。使用`train_test_split`函數(shù)將數(shù)據(jù)分為訓練集和測試集是模型評估的標準步驟。需要設(shè)置`test_size`來指定測試集比例,`random_state`用于確保每次運行分割結(jié)果一致,便于復(fù)現(xiàn)和比較。這里指定`test_size=0.3`表示30%的數(shù)據(jù)用于測試。第5題解析思路:本題考察預(yù)處理步驟的創(chuàng)建。由于數(shù)據(jù)包含數(shù)值型和類別型特征,且數(shù)值型特征需要標準化,類別型特征需要獨熱編碼,因此適合使用`ColumnTransformer`。需要明確指定`transformers`參數(shù),為每種類型的特征指定對應(yīng)的轉(zhuǎn)換器(`StandardScaler`和`OneHotEncoder`)以及它們應(yīng)用的列名。第6題解析思路:本題考察模型訓練。使用`Pipeline`將預(yù)處理步驟和分類模型串聯(lián)起來可以簡化流程并防止數(shù)據(jù)泄露。訓練模型只需調(diào)用`fit`方法,傳入訓練數(shù)據(jù)`X_train`和對應(yīng)的標簽`y_train`。Pipeline內(nèi)部會自動按順序執(zhí)行`preprocessor`和`classifier`的`fit`方法。第7題解析思路:本題考察模型預(yù)測。使用訓練好的Pipeline模型進行預(yù)測,只需調(diào)用`predict`方法,傳入測試數(shù)據(jù)`X_test`。Pipeline內(nèi)部會自動應(yīng)用`preprocessor`的`transform`方法(因為測試集不需要再擬合預(yù)處理器)和`classifier`的`predict`方法。第8題解析思路:本題考察模型評估指標的計算。模型評估需要將預(yù)測結(jié)果`y_pred`與真實標簽`y_test`進行比較。準確率(Accuracy)是常用的分類任務(wù)評估指標,計算預(yù)測正確的樣本數(shù)占總樣本數(shù)的比例。使用`accuracy_score`函數(shù)可以方便地計算得到。第9題解析思路:本題考察模型評估指標的深入理解。僅計算準確率可能無法全面反映模型性能,特別是當數(shù)據(jù)集類別不平衡時。分類報告(ClassificationReport)提供了更詳細的性能指標,包括每個類別的精確率(Precision)、召回率(Recall)和F1分數(shù)(F1-Score),以及宏平均(MacroAverage)和微平均(MicroAverage)。使用`classification_report`函數(shù)可以生成該報告。第10題解析思路:本題考察超參數(shù)調(diào)優(yōu)方法。為了找到模型的最佳性能,可以使用`GridSearchCV`進行網(wǎng)格搜索。需要定義一個參數(shù)網(wǎng)格`param_grid`,其中包含要搜索的參數(shù)名稱(需使用`Pipeline`中步驟的名稱作為前綴,如`classifier__C`)和對應(yīng)的候選值。`GridSearchCV`會遍歷所有參數(shù)組合,使用交叉驗證(`cv=5`)評估每一組合的性能(`scoring='accuracy'`),最終選擇最佳參數(shù)組合。需要調(diào)用`fit`方法執(zhí)行搜索。第11題解析思路:本題考察網(wǎng)格搜索結(jié)果的獲取。`GridSearchCV`對象在完成搜索后會記錄下最佳參數(shù)組合??梢酝ㄟ^訪問其`best_params_`屬性來獲取這些參數(shù)。這是選擇最優(yōu)模型配置的關(guān)鍵一步。第12題解析思路:本題考察使用最佳模型進行評估。網(wǎng)格搜索完成后,`GridSearchCV`的`best_estimator_`屬性包含了使用最佳參數(shù)組合訓練好的模型實例??梢允褂眠@個最佳模型對測試集進行預(yù)測,并計算其準確率,以評估調(diào)優(yōu)后的效果是否有所提升。第13題解析思路:本題考察模型在實際新數(shù)據(jù)上的應(yīng)用。`Pipeline`的設(shè)計優(yōu)勢在于封裝了預(yù)處理和模型,使得對新數(shù)據(jù)的預(yù)測變得簡單。即使新數(shù)據(jù)包含缺失值或需要與訓練時相同的編碼,只需將新數(shù)據(jù)作為`DataFrame`傳入最佳模型的`predict`方法即可。內(nèi)部會自動調(diào)用`preprocessor`的`transform`方法處理新數(shù)據(jù)。第14題解析思路:本題考察對不同模型的比較理解(思考題)。如果將分類器從`LogisticRegression`更換為`RandomForestClassifier`,主要的不同點包括:1.模型原理:LogisticRegression是線性模型,假設(shè)數(shù)據(jù)線性可分;RandomForest是集成模型(基于決策樹),通過多個決策樹的投票進行預(yù)測,能捕捉更復(fù)雜的非線性關(guān)系。2.參數(shù):兩個模型的超參數(shù)不同。例如,RandomForest有`n_estimators`(樹的數(shù)量)、`max_depth`(樹的最大深度)、`min_samples_split`(分割內(nèi)部節(jié)點所需的最小樣本數(shù))等關(guān)鍵參數(shù)。調(diào)優(yōu)時需要關(guān)注這些新的參數(shù)。3.預(yù)處理依賴性:LogisticRegression通常對特征縮放敏感(特別是正則化項),而RandomForest對特

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論