Python醫(yī)學(xué)數(shù)據(jù)分析(微課版)第9章 課后答案_第1頁
Python醫(yī)學(xué)數(shù)據(jù)分析(微課版)第9章 課后答案_第2頁
Python醫(yī)學(xué)數(shù)據(jù)分析(微課版)第9章 課后答案_第3頁
Python醫(yī)學(xué)數(shù)據(jù)分析(微課版)第9章 課后答案_第4頁
Python醫(yī)學(xué)數(shù)據(jù)分析(微課版)第9章 課后答案_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

課后答案上機(jī)練習(xí)答案:#導(dǎo)入必要庫importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.preprocessingimportStandardScalerfromsklearn.model_selectionimporttrain_test_split,learning_curvefromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportclassification_report,accuracy_scoreimportjoblib第1步,本地?cái)?shù)據(jù)集加載file_path='中醫(yī)證素.xls'TCM_Constitution_data=pd.read_excel(file_path)TCM_Constitution_data.head()第2步,描述性統(tǒng)計(jì)分析print("數(shù)據(jù)集的行數(shù)與列數(shù):{}".format(TCM_Constitution_data.shape))#數(shù)據(jù)形狀#繪制'y1'到'y2'列的柱狀圖#設(shè)置中文字體plt.rcParams['font.sans-serif']=['SimHei']#用來正常顯示中文標(biāo)簽plt.rcParams['axes.unicode_minus']=False#用來正常顯示負(fù)號(hào)#定義柱狀圖的顏色調(diào)色板colors=['blue','green','red','purple','orange','brown','pink','gray']#使用定義的顏色創(chuàng)建中醫(yī)體質(zhì)樣本數(shù)量統(tǒng)計(jì)柱狀圖TCM_Constitution_data.iloc[:,40:].sum().plot(kind='bar',color=colors,figsize=(5,3))plt.title('中醫(yī)體質(zhì)樣本數(shù)量統(tǒng)計(jì)')plt.xlabel('中醫(yī)體質(zhì)')plt.ylabel('樣本數(shù)量')plt.xticks(rotation=0)#將x軸標(biāo)簽旋轉(zhuǎn)為水平,以便于閱讀plt.tight_layout()#調(diào)整繪圖,確保所有內(nèi)容沒有重疊plt.show()第3步,數(shù)據(jù)處理(異常值處理、數(shù)據(jù)分割)#異常值處理#定義一個(gè)函數(shù),使用IQR方法檢測(cè)并替換異常值為中位數(shù)defreplace_outliers_with_median(series):#計(jì)算四分位數(shù)Q1和Q3Q1=series.quantile(0.25)#下四分位數(shù):數(shù)據(jù)集中25%的數(shù)據(jù)小于這個(gè)值Q3=series.quantile(0.75)#上四分位數(shù):數(shù)據(jù)集中75%的數(shù)據(jù)小于這個(gè)值IQR=Q3-Q1#四分位數(shù)范圍(IQR):上四分位數(shù)和下四分位數(shù)之間的距離#計(jì)算異常值的下界和上界lower_bound=Q1-1.5*IQR#異常值下界:Q1減去1.5倍的IQRupper_bound=Q3+1.5*IQR#異常值上界:Q3加上1.5倍的IQR#任何低于下界或高于上界的值都被視為異常值#計(jì)算中位數(shù)median=series.median()#中位數(shù):數(shù)據(jù)集中的中間值#將超出上下界的異常值替換為中位數(shù)series[~series.between(lower_bound,upper_bound)]=median#這里使用了邏輯運(yùn)算符~來取反,.between(lower_bound,upper_bound)返回一個(gè)布爾型數(shù)組#表示每個(gè)值是否在上下界之間,取反后就是異常值的位置returnseries#應(yīng)用函數(shù)到x1到x39列x_columns=TCM_Constitution_data.filter(regex='x[0-9]+')#使用正則表達(dá)式篩選出x1到x39的列TCM_Constitution_data[x_columns.columns]=x_columns.apply(replace_outliers_with_median)#對(duì)篩選出的列應(yīng)用替換異常值的函數(shù)#顯示處理異常值后的前幾行數(shù)據(jù)TCM_Constitution_data.head()#分割數(shù)據(jù)集X=TCM_Constitution_data[['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x12','x13','x14','x15','x16','x17','x18','x19','x20','x21','x22','x23','x24','x25','x26','x27','x28','x29','x30','x31','x32','x33','x34','x35','x36','x37','x38','x39']]y=TCM_Constitution_data[['y1','y2']]X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)X_train.shape,X_test.shape,y_train.shape,y_test.shape第4步,模型訓(xùn)練model=RandomForestClassifier(random_state=42)model.fit(X_train,y_train)第5步,模型評(píng)估(模型測(cè)試、繪制學(xué)習(xí)曲線、繪制訓(xùn)練驗(yàn)證得分曲線、隨機(jī)抽取樣例驗(yàn)證)y_pred=model.predict(X_test)print(classification_report(y_test,y_pred))print(f'準(zhǔn)確率:{accuracy_score(y_test,y_pred):.3f}')#使用learning_curve函數(shù)獲取訓(xùn)練和測(cè)試分?jǐn)?shù)train_sizes,train_scores,test_scores=learning_curve(model,X,y,cv=5,n_jobs=-1,train_sizes=np.linspace(0.1,1.0,10))#計(jì)算訓(xùn)練和驗(yàn)證分?jǐn)?shù)的平均值和標(biāo)準(zhǔn)差train_scores_mean=np.mean(train_scores,axis=1)train_scores_std=np.std(train_scores,axis=1)test_scores_mean=np.mean(test_scores,axis=1)test_scores_std=np.std(test_scores,axis=1)#繪制學(xué)習(xí)曲線plt.figure()plt.title("學(xué)習(xí)曲線")plt.xlabel("訓(xùn)練樣本數(shù)量")plt.ylabel("分?jǐn)?shù)")plt.grid()#填充訓(xùn)練和驗(yàn)證分?jǐn)?shù)的平均值與標(biāo)準(zhǔn)差的區(qū)域plt.fill_between(train_sizes,train_scores_mean-train_scores_std,train_scores_mean+train_scores_std,alpha=0.1,color="r")plt.fill_between(train_sizes,test_scores_mean-test_scores_std,test_scores_mean+test_scores_std,alpha=0.1,color="g")#繪制訓(xùn)練和驗(yàn)證分?jǐn)?shù)的曲線plt.plot(train_sizes,train_scores_mean,'o-',color="r",label="訓(xùn)練分?jǐn)?shù)")plt.plot(train_sizes,test_scores_mean,'o-',color="g",label="交叉驗(yàn)證分?jǐn)?shù)")#添加圖例plt.legend(loc="best")#顯示圖表plt.show()#隨機(jī)選取五個(gè)樣例查看原始結(jié)果和預(yù)測(cè)結(jié)果#設(shè)置隨機(jī)樣本的數(shù)量num_samples=5#生成隨機(jī)索引random_indices=np.random.randint(0,len(X_test),num_samples)#遍歷隨機(jī)索引,獲取每個(gè)樣本及其原始和預(yù)測(cè)結(jié)果foriinrandom_indices:#獲取測(cè)試集中的樣本sample=X_test.iloc[i]#獲取原始的測(cè)試集標(biāo)簽original_outcome=y_test.iloc[i]#使用模型進(jìn)行預(yù)測(cè)predi

溫馨提示

  • 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)論