版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1章一、簡答題1.什么是醫(yī)學數(shù)據(jù)?醫(yī)學數(shù)據(jù)的特點有哪些?答:醫(yī)學數(shù)據(jù)是指與醫(yī)學領(lǐng)域相關(guān)的信息集合,是醫(yī)療健康領(lǐng)域中的重要資源;醫(yī)學數(shù)據(jù)來源廣泛,具有數(shù)據(jù)量大、格式和內(nèi)容復雜多樣、時序性強、隱私性高等特點,并具有極高的研究價值。2.請說明使用Python分析數(shù)據(jù)的優(yōu)缺點。答:Python,又稱膠水語言,是一種高級編程語言,因其簡單易學和強大的數(shù)據(jù)分析庫而被廣泛應(yīng)用于數(shù)據(jù)分析領(lǐng)域。運用Python可以進行數(shù)據(jù)的清洗、處理、分析和可視化等工作。Python社區(qū)資源豐富;可跨平臺,支持Windows、Mac和Linux操作系統(tǒng)。但其性能可能不如某些專門面向數(shù)據(jù)分析的工具;數(shù)據(jù)處理和分析的速度在處理大數(shù)據(jù)集時可能會受到限制。3.請簡要說明醫(yī)學數(shù)據(jù)分析的流程。答:醫(yī)學數(shù)據(jù)分析的基本流程:數(shù)據(jù)收集、數(shù)據(jù)清洗、數(shù)據(jù)整合、數(shù)據(jù)分析、結(jié)果解釋、報告撰寫。二、選擇題1.B 2.C 3.C
第2章Python基礎(chǔ)一、選擇題答案:CDCDCBDDBC二、填空題1.3+(a+b)**22.index()方法3.3.[8,7,6,5,4,3,2]4.975.鍵(key)6.None7.548.CHINA本章上機練習實現(xiàn)代碼如下:lizi=['黃芪','黃連','黃柏']#(1)計算列表長度并輸出length=len(lizi)print("列表長度:",length)#(2)列表中追加元素“半夏”,并輸出添加后的列表lizi.append('半夏')print("添加元素后的列表:",lizi)#(3)請在列表的第一個位置插入元素“川貝母”,并輸出添加后的列表lizi.insert(0,'川貝母')print("插入元素后的列表:",lizi)#(4)請在列表刪除元素“黃連”,并輸出刪除后的列表lizi.remove('黃連')print("刪除元素后的列表:",lizi)#(5)請刪除列表的第2到第3個元素,并輸出刪除元素后的列表dellizi[1:3]print("刪除指定范圍元素后的列表:",lizi)#(6)請用forlenrange輸出列表的索引foriinrange(len(lizi)):print("索引:",i,"元素:",lizi[i])#(7)編寫一個函數(shù)reverse_list(lst),該函數(shù)接收一個列表作為參數(shù),并返回該列表的逆序版本(不改變原列表)defreverse_list(lst):returnlst[::-1]reversed_lizi=reverse_list(lizi)print("逆序列表:",reversed_lizi)運行結(jié)果如下:
第3章數(shù)據(jù)文件操作一、選擇題答案:ACBCCACBCB二、填空題1.a2.tell()方法3.列表(list)4.with5.鍵值對6.add_paragraph()方法7.pandasnumpymatplotlib8.打印每行的第二列9.append()10.列名或字段名本章上機練習運行代碼如下:fromdocximportDocumentimportopenpyxldoc=Document("/home/mw/input/studentinforma1176/學生信息表.docx")#讀取Word文件#提取表格數(shù)據(jù)table=doc.tables[0]data=[]forrowintable.rows[1:]:#跳過表頭行name=row.cells[0].textgender=row.cells[1].textclass_name=row.cells[2].textstudent_id=row.cells[3].textgrade=float(row.cells[4].text)data.append({"姓名":name,"性別":gender,"班級":class_name,"學號":student_id,"中醫(yī)基礎(chǔ)理論成績":grade})#數(shù)據(jù)處理:按成績降序排列sorted_data=sorted(data,key=lambdax:x["中醫(yī)基礎(chǔ)理論成績"],reverse=True)fori,iteminenumerate(sorted_data):item["排名"]=i+1#生成新的Excel文件wb=openpyxl.Workbook()ws=wb.activews.title="Sheet1"#添加標題和格式化ws.merge_cells("A1:D1")ws["A1"]="中醫(yī)藥學生中醫(yī)基礎(chǔ)理論成績排名"ws["A1"].font=openpyxl.styles.Font(bold=True,size=14)ws["A1"].alignment=openpyxl.styles.Alignment(horizontal="center")#填充數(shù)據(jù)到表格中headers=["排名","姓名","學號","中醫(yī)基礎(chǔ)理論成績"]forcol_num,headerinenumerate(headers,start=1):col_letter=openpyxl.utils.get_column_letter(col_num)ws[f"{col_letter}2"]=headerws[f"{col_letter}2"].font=openpyxl.styles.Font(bold=True)ws[f"{col_letter}2"].alignment=openpyxl.styles.Alignment(horizontal="center")forrow_num,iteminenumerate(sorted_data,start=3):ws.cell(row=row_num,column=1,value=item["排名"])ws.cell(row=row_num,column=2,value=item["姓名"])ws.cell(row=row_num,column=3,value=item["學號"])ws.cell(row=row_num,column=4,value=item["中醫(yī)基礎(chǔ)理論成績"])#保存Excel文件output_file="ranked_tcm_students.xlsx"wb.save(output_file)運行結(jié)果如圖3-15所示:圖3-15
一、單項選擇題答案:BCAABCDAAB二、填空題答案:自動擴展5(3,4)協(xié)方差矩陣數(shù)組shape[0,1)索引數(shù)據(jù)類型乘法(*)本章上機練習示例代碼如下。importnumpyasnp#輸入數(shù)據(jù)patient_data=np.array([
[1,150,20],
[2,120,15],
[3,190,30],
[4,160,25],
[5,220,40],
[6,130,18],
[7,180,35],
[8,210,45],
[9,140,22],
[10,170,32]])#分離數(shù)據(jù)patient_ids=patient_data[:,0]blood_sugar_levels=patient_data[:,1]
#存儲血糖數(shù)據(jù)insulin_doses=patient_data[:,2]
#存儲胰島素劑量數(shù)據(jù)
#1.計算全體患者的平均血糖水平和平均胰島素劑量mean_blood_sugar=np.mean(blood_sugar_levels)mean_insulin_dose=np.mean(insulin_doses)print(f"全體患者的平均血糖水平:{mean_blood_sugar:.2f}mg/dL")print(f"全體患者的平均胰島素劑量:{mean_insulin_dose:.2f}單位")#2.計算全體患者的血糖水平的標準差blood_sugar_std=np.std(blood_sugar_levels)print(f"血糖水平的標準差:{blood_sugar_std:.2f}mg/dL")#3.計算高血糖患者的胰島素劑量范圍high_blood_sugar_patients=blood_sugar_levels>180high_insulin_doses=insulin_doses[high_blood_sugar_patients]print(f"高血糖患者的胰島素劑量范圍:{np.min(high_insulin_doses)}到{np.max(high_insulin_doses)}單位")#4.分組計算低血糖患者、正常血糖患者、高血糖患者的平均胰島素劑量#定義血糖分組blood_sugar_groups=np.digitize(blood_sugar_levels,bins=[70,120,180,np.inf])-1group_names=['低血糖','正常血糖','高血糖']#計算每個組的胰島素劑量統(tǒng)計信息group_stats=[]forgroup_idx,group_nameinenumerate(group_names):#enumerate()函數(shù)用于將一個可遍歷的數(shù)據(jù)對象,組合為一個索引序列[(0,'低血糖'),(1,'正常血糖'),(2,'高血糖)]
group_data=insulin_doses[blood_sugar_groups==group_idx]
iflen(group_data)>0:
group_mean=np.mean(group_data)
group_std=np.std(group_data)
group_stats.append((group_name,group_mean,group_std))#打印每個組的統(tǒng)計信息forname,mean,stdingroup_stats:
print(f"{name}患者的胰島素劑量:平均={mean:.2f}單位,標準差={std:.2f}單位")#5.計算血糖水平和胰島素劑量之間的相關(guān)性#計算相關(guān)系數(shù)矩陣corr_matrix=np.corrcoef(blood_sugar_levels,insulin_doses)#提取血糖水平和胰島素劑量之間的相關(guān)系數(shù)corr_bs_id=corr_matrix[0,1]print(f"血糖水平與胰島素劑量的相關(guān)系數(shù):{corr_bs_id:.2f}")
#通常,相關(guān)系數(shù)的絕對值越接近1,表示兩個變量之間的線性關(guān)系越強#6.使用統(tǒng)計方法(如IQR,即四分位距)來識別血糖水平或胰島素劑量中的異常值#計算IQR并識別異常值Q1=np.percentile(blood_sugar_levels,25)Q3=np.percentile(blood_sugar_levels,75)IQR=Q3-Q1#定義異常值的閾值(例如,1.5倍的IQR)lower_bound=Q1-1.5*IQRupper_bound=Q3+1.5*IQR#識別異常值outliers=blood_sugar_levels[(blood_sugar_levels<lower_bound)|(blood_sugar_levels>upper_bound)]print(f"血糖水平的異常值:{outliers}")
#輸出為空,說明在定義的正常值閾值下,無異常值代碼運行結(jié)果如下:#1.計算全體患者的平均血糖水平和平均胰島素劑量全體患者的平均血糖水平:167.00mg/dL全體患者的平均胰島素劑量:28.20單位#2.計算全體患者的血糖水平的標準差血糖水平的標準差:31.64mg/dL#3.計算高血糖患者的胰島素劑量范圍高血糖患者的胰島素劑量范圍:30到45單位#4.分組計算低血糖患者、正常血糖患者、高血糖患者的平均胰島素劑量正常血糖患者的胰島素劑量:平均=22.00單位,標準差=5.45單位高血糖患者的胰島素劑量:平均=37.50單位,標準差=5.59單位#5.計算血糖水平和胰島素劑量之間的相關(guān)性血糖水平與胰島素劑量的相關(guān)系數(shù):0.95#6.使用統(tǒng)計方法(如IQR,即四分位距)來識別血糖水平或胰島素劑量中的異常值血糖水平的異常值:[]
本章習題(一)單項選擇題參考答案:1-5:BDAAB6-10:DAABC(二)填空題參考答案:1.Series,DataFrame2.data,index3.index,columns4.df.head(n),55.index6.groupby()7.isnull(),isna()8.shape()9.布爾型10.sheet_name本章上機練習上機練習參考答案importpandasaspddf=pd.read_excel('C:\\Users\\Lenovo\\Desktop\\上機練習.exam_grades.xlsx')#1.讀取本題指定的excel文件(示例代碼將題目文件暫時存放在桌面進行數(shù)據(jù)讀取)print("原始數(shù)據(jù):")print(df)print("缺失值統(tǒng)計:")print(df.isnull())#2.檢測缺失值avg_grades=df.groupby('課程')['成績'].mean().reset_index()#3-(1).計算每門課程的平均成績print("每門課程的平均成績:")print(avg_grades)student_avg_grades=df.groupby('學號')['成績'].mean().reset_index()#3-(2).計算每個學生的平均成績print("每個學生的平均成績:")print(student_avg_grades)df_filled=df.fillna(student_avg_grades)#4.使用學生的平均成績填充缺失值print(df_filled)pipinstallpandasopenpyxlwithpd.ExcelWriter('exam_analysis_results.xlsx',engine='openpyxl')aswriter:avg_grades.to_excel(writer,sheet_name='課程平均成績')student_avg_grades.to_excel(writer,sheet_name='學生平均成績')df_filled.to_excel(writer,sheet_name='填充后的成績單')#5.將上述分析得出的結(jié)果輸出保存至文件“exam_analysis_results.xlsx”輸出結(jié)果如下:原始數(shù)據(jù):學號班級姓名性別課程成績0230802424123級臨床藥學(1)班李翔男生物86.01230802424423級臨床藥學(1)班周怡女生物89.02230802425123級臨床藥學(1)班張?zhí)m男生物85.03230802424923級臨床藥學(1)班朱銀華男生物77.04230802421923級臨床藥學(1)班劉芳芳女生物90.0...................70230802430123級臨床藥學(1)班劉靜女免疫學78.071230802418823級臨床藥學(1)班張慧芳女免疫學87.072230802424523級臨床藥學(1)班王瀟女免疫學83.073230802427723級臨床藥學(1)班趙可心女免疫學88.074230802439623級臨床藥學(1)班李嘉豪男免疫學88.0[75rowsx6columns]缺失值統(tǒng)計:學號班級姓名性別課程成績0FalseFalseFalseFalseFalseFalse1FalseFalseFalseFalseFalseFalse2FalseFalseFalseFalseFalseFalse3FalseFalseFalseFalseFalseFalse4FalseFalseFalseFalseFalseFalse....................70FalseFalseFalseFalseFalseFalse71FalseFalseFalseFalseFalseFalse72FalseFalseFalseFalseFalseFalse73FalseFalseFalseFalseFalseFalse74FalseFalseFalseFalseFalseFalse[75rowsx6columns]每門課程的平均成績:課程成績0免疫學84.2000001化學83.2142862物理學84.0000003生物83.7333334藥理學87.000000每個學生的平均成績:學號成績0230802418883.801230802420188.602230802421988.003230802423781.004230802424183.405230802424487.806230802424583.757230802424979.758230802425182.009230802425678.6010230802427787.4011230802428890.6012230802430182.2013230802434780.0014230802439688.20填充后的數(shù)據(jù):學號班級姓名性別課程成績0230802424123級臨床藥學(1)班李翔男生物86.01230802424423級臨床藥學(1)班周怡女生物89.02230802425123級臨床藥學(1)班張?zhí)m男生物85.03230802424923級臨床藥學(1)班朱銀華男生物77.04230802421923級臨床藥學(1)班劉芳芳女生物90.0...................70230802430123級臨床藥學(1)班劉靜女免疫學78.071230802418823級臨床藥學(1)班張慧芳女免疫學87.072230802424523級臨床藥學(1)班王瀟女免疫學83.073230802427723級臨床藥學(1)班趙可心女免疫學88.074230802439623級臨床藥學(1)班李嘉豪男免疫學88.0[75rowsx6columns]
第6章課后答案本章習題答案一、單項選擇題1-5DBBCA6-10DACCA二、填空題1.Figure2.plot3.title4.xlabel,ylabel5.Legend6.show7.subplots8.grid9.color10.savefig上機練習答案(1)importmatplotlib.pyplotaspltdata=[(2015,45.2,1.4,11.4),(2017,52.7,1.6,12.0),(2018,57.5,1.6,12.4),(2019,62.5,1.5,12.7),(2020,68.3,1.5,13.1),(2021,73.2,1.6,13.7)]years=[x[0]forxindata]zhiyeyishi=[x[1]forxindata]jianxiyishi=[x[2]forxindata]zhongyaoshi=[x[3]forxindata]plt.figure()plt.plot(years,zhiyeyishi,label='執(zhí)業(yè)醫(yī)師',marker='s',color='y')plt.plot(years,jianxiyishi,label='見習醫(yī)師',marker='d',color='b')plt.plot(years,zhongyaoshi,label='中藥師',marker='*',color='r')plt.xticks(years)plt.xlabel('年份')plt.ylabel('中醫(yī)藥人員數(shù)')plt.title('2015—2021年中醫(yī)藥人員數(shù)')plt.legend()plt.show()(2)#根據(jù)表格信息,選擇繪制內(nèi)蒙古地區(qū)三種中醫(yī)類醫(yī)院(中醫(yī)醫(yī)院、中西醫(yī)結(jié)合醫(yī)院、民族醫(yī)醫(yī)院)占比的餅狀圖。importmatplotlib.pyplotaspltex=(0,0.1,0)plt.pie([43.58,3.74,52.68],labels=['中醫(yī)醫(yī)院','中西醫(yī)結(jié)合醫(yī)院','民族醫(yī)醫(yī)院'],autopct='%1.1f%%',explode=ex)plt.axis('equal')plt.show()(3)importmatplotlib.pyplotaspltregion=['吉林','內(nèi)蒙古','遼寧','湖南','湖北','四川']hospital_counts=[23667,33160,34874,67229,51840,83988]plt.bar(region,hospital_counts,width=0.5)plt.title('2021年部分地區(qū)中醫(yī)類醫(yī)院床位數(shù)')plt.xlabel('地區(qū)')plt.ylabel('數(shù)量/(個)')plt.show()(4)importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdimportseabornassnsyear=['2018年','2019年','2020年','2021年']Expenditure=['醫(yī)療衛(wèi)生服務(wù)支出','醫(yī)療保障支出','行政管理事務(wù)支出','人口與計劃生育事務(wù)支出']data=np.array([[6908.05,7795.57,1005.79,689.72],[7986.42,8459.16,883.77,687.61],[11415.83,8844.93,1021.15,660],[9564.18,9416.78,1048.13,646.97]])fig,ax=plt.subplots(figsize=(8,7))ax.set_xticks(np.arange(len(Expenditure)))ax.set_yticks(np.arange(len(year)))heat_map=sns.heatmap(data,annot=True,fmt='.2f',cmap='Blues',xticklabels=Expenditure,yticklabels=year)plt.title('政府衛(wèi)生支出(億元)',fontsize=15)plt.imshow(data)plt.tight_layout()plt.show()(5)importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdimportseabornassnsplt.figure(figsize=(8,8))plt.subplot(2,2,1)data=[(2015,45.2,1.4,11.4),(2017,52.7,1.6,12.0),(2018,57.5,1.6,12.4),(2019,62.5,1.5,12.7),(2020,68.3,1.5,13.1),(2021,73.2,1.6,13.7)]years=[x[0]forxindata]zhiyeyishi=[x[1]forxindata]jianxiyishi=[x[2]forxindata]zhongyaoshi=[x[3]forxindata]plt.plot(years,zhiyeyishi,label='執(zhí)業(yè)醫(yī)師',marker='s',color='y')plt.plot(years,jianxiyishi,label='見習醫(yī)師',marker='d',color='b')plt.plot(years,zhongyaoshi,label='中藥師',marker='*',color='r')plt.xticks(years)plt.xlabel('年份')plt.ylabel('中醫(yī)藥人員數(shù)')plt.title('2015—2021年中醫(yī)藥人員數(shù)')plt.legend()plt.subplot(2,2,2)ex=(0,0.1,0)plt.pie([43.58,3.74,52.68],labels=['中醫(yī)醫(yī)院','中西醫(yī)結(jié)合醫(yī)院','民族醫(yī)醫(yī)院'],autopct='%1.1f%%',explode=ex)plt.axis('equal')plt.subplot(2,2,3)region=['吉林','內(nèi)蒙古','遼寧','湖南','湖北','四川']hospital_counts=[23667,33160,34874,67229,51840,83988]plt.bar(region,hospital_counts,width=0.5)plt.title('2021年部分地區(qū)中醫(yī)類醫(yī)院床位數(shù)')plt.xlabel('地區(qū)')plt.ylabel('數(shù)量/(個)')plt.subplot(2,2,4)year=['2018年','2019年','2020年','2021年']Expenditure=['醫(yī)療衛(wèi)生服務(wù)支出','醫(yī)療保障支出','行政管理事務(wù)支出','人口與計劃生育事務(wù)支出']data=np.array([[6908.05,7795.57,1005.79,689.72],[7986.42,8459.16,883.77,687.61],[11415.83,8844.93,1021.15,660],[9564.18,9416.78,1048.13,646.97]])ax.set_xticks(np.arange(len(Expenditure)))ax.set_yticks(np.arange(len(year)))heat_map=sns.heatmap(data,annot=True,fmt='.2f',cmap='Blues',xticklabels=Expenditure,yticklabels=year)plt.title('政府衛(wèi)生支出(億元)',fontsize=10)plt.imshow(data)plt.tight_layout()plt.show()
課后習題一、選擇題:DCBBCCCCBAABAAAC二、填空題1. 無監(jiān)督學習2. 降維3. 決定系數(shù)4. KNN5. 0和16. 相互獨立7. 后驗8. 預測值9. 決策樹10. 無監(jiān)督11. 簇內(nèi)平方誤差
課后答案課后習題答案:準確率:0.893、查準率:0.909、查全率:0.833、F1值:0.870(1)將1000個樣本隨機打亂,確保數(shù)據(jù)的隨機性。(2)將打亂后的數(shù)據(jù)集平均分成K個大小相等的子集,每個子集包含大約1000/K個樣本。(3)對于每個折疊(從第1個到第K個);將該折疊作為驗證集,剩下的K-1個折疊作為訓練集;使用訓練集訓練支持向量機(SVM)模型;使用驗證集評估模型的性能,記錄相關(guān)的性能指標,如準確率、查準率等。(4)重復步驟3,直到每個折疊都作為驗證集被使用過一次。(5)最后,計算所有K次迭代中記錄的性能指標的平均值,這個平均值將作為支持向量機(SVM)模型在1000個樣本數(shù)據(jù)集上的最終性能估計。實施網(wǎng)格搜索時,需定義一個參數(shù)網(wǎng)格,它是一個字典,包含要調(diào)整的參數(shù)名稱及其可能的取值。字典結(jié)構(gòu)如下:param_grid={'penalty':['l1','l2'],'C':[0.01,0.1,1,10,100]}代碼如下:fromsklearn.datasetsimportload_irisfromsklearn.linear_modelimportLogisticRegressionfromsklearn.model_selectionimportGridSearchCVfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score#加載iris數(shù)據(jù)集iris=load_iris()X,y=iris.data,iris.targetparam_grid={'penalty':['l1','l2'],'C':[0.01,0.1,1,10,100]}#劃分訓練集和測試集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)#創(chuàng)建邏輯回歸模型log_reg=LogisticRegression(max_iter=10000,solver='liblinear')#創(chuàng)建GridSearchCV對象grid_search=GridSearchCV(log_reg,param_grid,cv=5)#執(zhí)行網(wǎng)格搜索grid_search.fit(X_train,y_train)#獲取最佳參數(shù)組合best_params=grid_search.best_params_#使用最佳參數(shù)組合進行預測best_estimator=grid_search.best_estimator_y_pred=best_estimator.predict(X_test)#計算準確率best_accuracy=accuracy_score(y_test,y_pred)print(f"最佳參數(shù)組合:{best_params}")print(f"最佳準確率:{best_accuracy:.2f}")最佳組合:penalty:l2、C:10最佳準確率:0.998上機練習答案:#導入sklearn.linear_model模塊,用于創(chuàng)建邏輯回歸模型fromsklearn.linear_modelimportLogisticRegression#導入sklearn.model_selection模塊,用于網(wǎng)格搜索和訓練集測試集劃分fromsklearn.model_selectionimportGridSearchCVfromsklearn.model_selectionimporttrain_test_split第1步,數(shù)據(jù)加載fromsklearn.datasetsimportload_diabetesdiabetes=load_diabetes()X=diabetes.datay=diabetes.target第2步,數(shù)據(jù)處理(二值化、數(shù)據(jù)集劃分)#由于糖尿病數(shù)據(jù)集的目標變量是連續(xù)的,我們需要將其二值化fromsklearn.preprocessingimportKBinsDiscretizerkbd=KBinsDiscretizer(n_bins=2,encode='ordinal',strategy='quantile')y_binned=kbd.fit_transform(y[:,None]).ravel()#劃分訓練集和測試集X_train,_,y_train,_=train_test_split(X,y_binned,test_size=0.3,random_state=1)第3步,初始化模型實例和參數(shù)#創(chuàng)建邏輯回歸模型實例log_reg=LogisticRegression(solver='liblinear',max_iter=1000,random_state=1)#設(shè)置網(wǎng)格搜索的參數(shù)范圍param_grid={'C':[0.001,0.01,0.1,1,10,100,1000],'penalty':['l1','l2'],}#初始化網(wǎng)格搜索對象,設(shè)置交叉驗證的折數(shù)grid_search=GridSearchCV(log_reg,param_grid,cv=5,scoring='accuracy',n_jobs=-1)第4步,使用網(wǎng)格搜索進行模型性能優(yōu)化grid_search.fit(X_train,y_train)#輸出最優(yōu)參數(shù)及對應(yīng)的交叉驗證準確率print(f"最優(yōu)參數(shù):{grid_search.best_params_}")print(f"最優(yōu)參數(shù)對應(yīng)的交叉驗證準確率:{grid_search.best_score_.round(3)}")
課后答案上機練習答案:#導入必要庫importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.preprocessingimportStandardScalerfromsklearn.model_selectionimporttrain_test_split,learning_curvefromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportclassification_report,accuracy_scoreimportjoblib第1步,本地數(shù)據(jù)集加載file_path='中醫(yī)證素.xls'TCM_Constitution_data=pd.read_excel(file_path)TCM_Constitution_data.head()第2步,描述性統(tǒng)計分析print("數(shù)據(jù)集的行數(shù)與列數(shù):{}".format(TCM_Constitution_data.shape))#數(shù)據(jù)形狀#繪制'y1'到'y2'列的柱狀圖#設(shè)置中文字體plt.rcParams['font.sans-serif']=['SimHei']#用來正常顯示中文標簽plt.rcParams['axes.unicode_minus']=False#用來正常顯示負號#定義柱狀圖的顏色調(diào)色板colors=['blue','green','red','purple','orange','brown','pink','gray']#使用定義的顏色創(chuàng)建中醫(yī)體質(zhì)樣本數(shù)量統(tǒng)計柱狀圖TCM_Constitution_data.iloc[:,40:].sum().plot(kind='bar',color=colors,figsize=(5,3))plt.title('中醫(yī)體質(zhì)樣本數(shù)量統(tǒng)計')plt.xlabel('中醫(yī)體質(zhì)')plt.ylabel('樣本數(shù)量')plt.xticks(rotation=0)#將x軸標簽旋轉(zhuǎn)為水平,以便于閱讀plt.tight_layout()#調(diào)整繪圖,確保所有內(nèi)容沒有重疊plt.show()第3步,數(shù)據(jù)處理(異常值處理、數(shù)據(jù)分割)#異常值處理#定義一個函數(shù),使用IQR方法檢測并替換異常值為中位數(shù)defreplace_outliers_with_median(series):#計算四分位數(shù)Q1和Q3Q1=series.quantile(0.25)#下四分位數(shù):數(shù)據(jù)集中25%的數(shù)據(jù)小于這個值Q3=series.quantile(0.75)#上四分位數(shù):數(shù)據(jù)集中75%的數(shù)據(jù)小于這個值IQR=Q3-Q1#四分位數(shù)范圍(IQR):上四分位數(shù)和下四分位數(shù)之間的距離#計算異常值的下界和上界lower_bound=Q1-1.5*IQR#異常值下界:Q1減去1.5倍的IQRupper_bound=Q3+1.5*IQR#異常值上界:Q3加上1.5倍的IQR#任何低于下界或高于上界的值都被視為異常值#計算中位數(shù)median=series.median()#中位數(shù):數(shù)據(jù)集中的中間值#將超出上下界的異常值替換為中位數(shù)series[~series.between(lower_bound,upper_bound)]=median#這里使用了邏輯運算符~來取反,.between(lower_bound,upper_bound)返回一個布爾型數(shù)組#表示每個值是否在上下界之間,取反后就是異常值的位置returnseries#應(yīng)用函數(shù)到x1到x39列x_columns=TCM_Constitution_data.filter(regex='x[0-9]+')#使用正則表達式篩選出x1到x39的列TCM_Constitution_data[x_columns.columns]=x_columns.apply(replace_outliers_with_median)#對篩選出的列應(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','
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- BPO項目培訓制度
- 體衛(wèi)處衛(wèi)生培訓制度
- 北京幼兒園培訓制度規(guī)定
- 小學培訓機構(gòu)與制度
- 開發(fā)部會議培訓制度
- 維修車間人員培訓制度
- 建立健全防沖培訓制度
- 保安員培訓及管理制度
- 工廠新員工入職培訓制度
- 機關(guān)單位普通話培訓制度
- 急性呼吸窘迫綜合征ARDS教案
- 實驗室質(zhì)量控制操作規(guī)程計劃
- 骨科手術(shù)術(shù)前宣教
- 電梯安全培訓課件下載
- 事業(yè)單位職工勞動合同管理規(guī)范
- 老年人靜脈輸液技巧
- 呼吸內(nèi)科一科一品護理匯報
- 2025年公安機關(guān)人民警察基本級執(zhí)法資格考試試卷及答案
- 網(wǎng)戀詐騙課件
- 2025版壓力性損傷預防和治療的新指南解讀
- 2025年新疆第師圖木舒克市公安局招聘警務(wù)輔助人員公共基礎(chǔ)知識+寫作綜合練習題及答案
評論
0/150
提交評論