2025年P(guān)ython機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目試卷-實(shí)戰(zhàn)技巧全解析_第1頁
2025年P(guān)ython機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目試卷-實(shí)戰(zhàn)技巧全解析_第2頁
2025年P(guān)ython機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目試卷-實(shí)戰(zhàn)技巧全解析_第3頁
2025年P(guān)ython機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目試卷-實(shí)戰(zhàn)技巧全解析_第4頁
2025年P(guān)ython機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目試卷-實(shí)戰(zhàn)技巧全解析_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2025年P(guān)ython機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目試卷-實(shí)戰(zhàn)技巧全解析考試時(shí)間:______分鐘總分:______分姓名:______一、請(qǐng)編寫Python代碼,使用Pandas庫加載數(shù)據(jù)文件`data.csv`。該文件包含逗號(hào)分隔的數(shù)值型特征和名為`target`的二分類目標(biāo)變量。加載數(shù)據(jù)后,顯示數(shù)據(jù)的前5行,并使用`info()`方法輸出數(shù)據(jù)的概要信息(包括每列的數(shù)據(jù)類型和非空值數(shù)量)。二、在上一個(gè)問題加載的數(shù)據(jù)中,假設(shè)`feature5`列存在缺失值。請(qǐng)實(shí)現(xiàn)以下兩種處理缺失值的策略:1.使用該特征的平均值填充缺失值。2.刪除包含`feature5`缺失值的行。請(qǐng)分別對(duì)這兩種處理后的數(shù)據(jù)子集,計(jì)算`feature5`的均值(使用`mean()`方法),并簡要說明(通過注釋)哪種方法可能導(dǎo)致數(shù)據(jù)分布的變化。三、假設(shè)數(shù)據(jù)集中包含一個(gè)名為`category_column`的類別特征,其包含多個(gè)文本標(biāo)簽。請(qǐng)編寫代碼實(shí)現(xiàn)以下操作:1.使用`scikit-learn`的`OneHotEncoder`將`category_column`轉(zhuǎn)換為獨(dú)熱編碼(One-Hot)向量。假設(shè)`category_column`有三個(gè)值:'A','B','C'。2.將得到的獨(dú)熱編碼向量與原始數(shù)據(jù)集中除`category_column`和`target`列之外的其他數(shù)值型特征合并,形成一個(gè)新的`pandas``DataFrame`。3.打印合并后`DataFrame`的前5行。四、數(shù)據(jù)集中`feature1`和`feature2`是兩個(gè)連續(xù)型特征。假設(shè)目標(biāo)變量`target`是二分類的。請(qǐng)使用`scikit-learn`的`train_test_split`函數(shù),將這些數(shù)據(jù)隨機(jī)劃分為訓(xùn)練集和測(cè)試集。*要求:設(shè)置`test_size=0.2`,`random_state=42`以保證結(jié)果可復(fù)現(xiàn)。*要求:僅使用劃分出的訓(xùn)練集數(shù)據(jù),使用`scikit-learn`中的`LogisticRegression`構(gòu)建一個(gè)邏輯回歸分類模型。*編寫代碼完成劃分、模型構(gòu)建和訓(xùn)練過程。五、在上一個(gè)問題得到的訓(xùn)練數(shù)據(jù)中,`feature3`存在較大的數(shù)值范圍。請(qǐng)?jiān)谟?xùn)練邏輯回歸模型之前,對(duì)訓(xùn)練集中的`feature1`、`feature2`和`feature3`進(jìn)行標(biāo)準(zhǔn)化(Standardization)處理。*要求:使用`scikit-learn`的`StandardScaler`進(jìn)行標(biāo)準(zhǔn)化,并對(duì)原始數(shù)據(jù)進(jìn)行擬合(fit)。*要求:使用`transform()`方法將`feature1`、`feature2`和`feature3`轉(zhuǎn)換為標(biāo)準(zhǔn)化后的值,創(chuàng)建一個(gè)新的`DataFrame`(或原地修改,并保持`target`列)。*要求:使用這個(gè)標(biāo)準(zhǔn)化后的數(shù)據(jù)訓(xùn)練一個(gè)邏輯回歸模型,要求與第四題不同,這次不使用`scikit-learn`的`Pipeline`,而是顯式地先進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化(使用`StandardScaler`的`fit_transform`),再傳入`LogisticRegression`進(jìn)行訓(xùn)練。六、對(duì)于第五題訓(xùn)練得到的邏輯回歸模型,請(qǐng)使用`scikit-learn`中的`GridSearchCV`進(jìn)行超參數(shù)調(diào)優(yōu)。*要求:嘗試調(diào)整`LogisticRegression`的`C`參數(shù)(范圍:[0.01,0.1,1,10,100])和`penalty`參數(shù)(嘗試'l1'和'l2')。*要求:使用交叉驗(yàn)證`cv=5`。*要求:在第五題劃分出的訓(xùn)練集(注意:是標(biāo)準(zhǔn)化后的訓(xùn)練集)上執(zhí)行`GridSearchCV`,找到最佳參數(shù)組合。七、使用`GridSearchCV`找到的最佳模型參數(shù),在第五題劃分出的測(cè)試集(注意:是標(biāo)準(zhǔn)化后的測(cè)試集)上評(píng)估模型性能。*要求:計(jì)算并打印以下評(píng)估指標(biāo):準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和F1分?jǐn)?shù)(F1Score)。*要求:使用`scikit-learn`提供的相應(yīng)函數(shù)或方法計(jì)算這些指標(biāo)。八、假設(shè)測(cè)試集`target`的分布不平衡(例如,正類樣本遠(yuǎn)少于負(fù)類樣本)。請(qǐng)簡要說明(通過注釋)在這種情況下,僅僅使用準(zhǔn)確率(Accuracy)作為評(píng)估指標(biāo)可能存在哪些問題。并列舉至少兩種可以使用的、更合適的評(píng)估指標(biāo),簡要說明選擇它們的理由。試卷答案一、```pythonimportpandasaspddata=pd.read_csv('data.csv')print(data.head())()```解析:使用`pandas.read_csv`加載CSV文件到DataFrame。`head()`用于顯示前五行,`info()`用于輸出數(shù)據(jù)概要,包括列名、數(shù)據(jù)類型和非空值數(shù)量,有助于初步了解數(shù)據(jù)結(jié)構(gòu)和質(zhì)量。二、```python#方法1:使用平均值填充mean_value=data['feature5'].mean()data_filled_mean=data.copy()data_filled_mean['feature5'].fillna(mean_value,inplace=True)print("Meanoffeature5afterfilling:",data_filled_mean['feature5'].mean())#方法2:刪除含有缺失值的行data_dropped=data.dropna(subset=['feature5'])print("Meanoffeature5afterdropping:",data_dropped['feature5'].mean()ifnotdata_dropped.emptyelse"N/A")#注釋:使用平均值填充會(huì)使得填充后的特征值向數(shù)據(jù)整體分布中心靠攏,可能降低方差;刪除行會(huì)減少樣本數(shù)量,可能導(dǎo)致模型訓(xùn)練不充分,且會(huì)丟失其他特征與缺失值相關(guān)的信息。```解析:計(jì)算`feature5`的平均值。方法1使用`fillna`將所有缺失值替換為該平均值。方法2使用`dropna`刪除任何`feature5`列有缺失值的行。分別計(jì)算填充后和刪除后`feature5`的均值以驗(yàn)證操作。注釋說明了兩種方法的典型影響。三、```pythonfromsklearn.preprocessingimportOneHotEncoder#創(chuàng)建編碼器,處理類別特征encoder=OneHotEncoder(sparse_output=False,categories=['A','B','C'])#指定類別以簡化結(jié)果#對(duì)類別特征進(jìn)行編碼encoded_features=encoder.fit_transform(data[['category_column']])#創(chuàng)建新的DataFrame,包含編碼后的特征encoded_df=pd.DataFrame(encoded_features,columns=encoder.get_feature_names_out(['category_column']))#合并編碼后的特征回原始數(shù)據(jù)(排除category_column和target)final_data=pd.concat([data.drop(columns=['category_column','target']),encoded_df],axis=1)print(final_data.head())```解析:實(shí)例化`OneHotEncoder`,指定`sparse_output=False`以返回稠密數(shù)組,并明確`categories`以確保編碼順序一致。使用`fit_transform`對(duì)`category_column`進(jìn)行編碼。將編碼結(jié)果(數(shù)組)轉(zhuǎn)換為`DataFrame`,并設(shè)置合適的列名。最后,使用`pd.concat`將編碼后的特征與原始數(shù)據(jù)(排除原類別列和目標(biāo)列)合并。四、```pythonfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLogisticRegression#定義特征和目標(biāo)變量X=data.drop(columns=['target'])y=data['target']#劃分訓(xùn)練集和測(cè)試集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)#創(chuàng)建并訓(xùn)練邏輯回歸模型model=LogisticRegression()model.fit(X_train,y_train)```解析:從數(shù)據(jù)中分離出特征集`X`(所有非目標(biāo)列)和目標(biāo)變量`y`(目標(biāo)列)。使用`train_test_split`按指定比例(80%訓(xùn)練,20%測(cè)試)和隨機(jī)種子劃分?jǐn)?shù)據(jù)。創(chuàng)建`LogisticRegression`實(shí)例,并使用訓(xùn)練集數(shù)據(jù)`fit`方法進(jìn)行模型訓(xùn)練。五、```pythonfromsklearn.preprocessingimportStandardScaler#創(chuàng)建標(biāo)準(zhǔn)化器實(shí)例scaler=StandardScaler()#選擇需要標(biāo)準(zhǔn)化的特征features_to_scale=['feature1','feature2','feature3']#在訓(xùn)練集上擬合并轉(zhuǎn)換特征X_train_scaled=scaler.fit_transform(X_train[features_to_scale])#將標(biāo)準(zhǔn)化后的特征轉(zhuǎn)換回DataFrame,并重新合并目標(biāo)變量X_train_scaled_df=pd.DataFrame(X_train_scaled,columns=features_to_scale,index=X_train.index)X_train_processed=pd.concat([X_train_scaled_df,X_train.drop(columns=features_to_scale,errors='ignore')],axis=1)X_train_processed['target']=y_train#創(chuàng)建并訓(xùn)練邏輯回歸模型(使用標(biāo)準(zhǔn)化特征)model_scaled=LogisticRegression()model_scaled.fit(X_train_processed[features_to_scale],y_train)```解析:實(shí)例化`StandardScaler`。明確需要標(biāo)準(zhǔn)化的特征列。使用`fit_transform`在訓(xùn)練集上擬合標(biāo)準(zhǔn)化器并轉(zhuǎn)換特征。將轉(zhuǎn)換后的特征數(shù)組重新構(gòu)建為`DataFrame`,并保留目標(biāo)變量,與未標(biāo)準(zhǔn)化的其他特征合并。最后,使用這些標(biāo)準(zhǔn)化后的特征在訓(xùn)練集上訓(xùn)練邏輯回歸模型。六、```pythonfromsklearn.model_selectionimportGridSearchCV#定義要搜索的參數(shù)網(wǎng)格param_grid={'C':[0.01,0.1,1,10,100],'penalty':['l1','l2']}#創(chuàng)建邏輯回歸實(shí)例log_reg=LogisticRegression(solver='liblinear')#l1和l2通常需要liblinear或saga求解器#創(chuàng)建GridSearchCV實(shí)例grid_search=GridSearchCV(estimator=log_reg,param_grid=param_grid,cv=5,scoring='accuracy')#在標(biāo)準(zhǔn)化后的訓(xùn)練集上執(zhí)行網(wǎng)格搜索grid_search.fit(X_train_scaled,y_train)#grid_search.best_params_將包含最佳參數(shù)組合```解析:定義一個(gè)字典`param_grid`,指定要搜索的`C`值和`penalty`類別。創(chuàng)建`LogisticRegression`實(shí)例,注意選擇支持`l1`和`l2`正則化的求解器(如`liblinear`)。實(shí)例化`GridSearchCV`,傳入邏輯回歸模型、參數(shù)網(wǎng)格、交叉驗(yàn)證次數(shù)`cv=5`和評(píng)估指標(biāo)`scoring='accuracy'`。在標(biāo)準(zhǔn)化后的訓(xùn)練集上調(diào)用`fit`方法執(zhí)行搜索,模型會(huì)自動(dòng)進(jìn)行交叉驗(yàn)證和參數(shù)調(diào)優(yōu)。七、```pythonfromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_score#使用網(wǎng)格搜索找到的最佳模型評(píng)估測(cè)試集best_model=grid_search.best_estimator_#在標(biāo)準(zhǔn)化后的測(cè)試集上預(yù)測(cè)X_test_scaled=scaler.transform(X_test[features_to_scale])#對(duì)測(cè)試集使用同一個(gè)scaler進(jìn)行轉(zhuǎn)換y_pred=best_model.predict(X_test_scaled)#計(jì)算評(píng)估指標(biāo)accuracy=accuracy_score(y_test,y_pred)precision=precision_score(y_test,y_pred)recall=recall_score(y_test,y_pred)f1=f1_score(y_test,y_pred)print(f"Accuracy:{accuracy}")print(f"Precision:{precision}")print(f"Recall:{recall}")print(f"F1Score:{f1}")```解析:從`GridSearchCV`對(duì)象中獲取`best_estimator_`,這是在交叉驗(yàn)證中表現(xiàn)最好的模型實(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論