基于機(jī)器學(xué)習(xí)的糖尿病預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于機(jī)器學(xué)習(xí)的糖尿病預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于機(jī)器學(xué)習(xí)的糖尿病預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于機(jī)器學(xué)習(xí)的糖尿病預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于機(jī)器學(xué)習(xí)的糖尿病預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

[25]:(1)Accuracy計(jì)算公式如式REF正確率公式\h(4-2)所示:Accuracy=TP+TNTP+FP+TN+FN (4-2)(2)Sensitivity(P)計(jì)算公式如式REFSen\h(4-3)所示:Sensitivity(P)=TPTP+(3)Specificity(R)計(jì)算公式如式REFSpe\h(4-4)所示:Specificity(R)=TNTN(4)F-Measure計(jì)算公式如式REFFm\h(4-5)所示:F?Measure=2×P×R(5)Cost計(jì)算公式如式REFCost\h(4-6)所示:Cost=FP+FN×5 (4-6)本文運(yùn)用了多種算法來開展預(yù)測(cè)工作,其中覆蓋邏輯回歸、支持向量機(jī)、決策樹、極度梯度提升樹(XGBoost)以及多層感知器(MultilayerPerceptron,MLP),實(shí)驗(yàn)結(jié)果呈現(xiàn)于表4-6,從整體情況來看,RF模型的預(yù)測(cè)效果相對(duì)較好,后續(xù)會(huì)把參數(shù)調(diào)節(jié)后的RF模型嵌入到糖尿病智能預(yù)測(cè)系統(tǒng)里。表4-6模型預(yù)測(cè)效果對(duì)比MetricModelaccuracyprecisionrecallf1_scoreLR0.7947010.7750.5849050.666666SVM0.7218540.6976740.5084740.588235DT0.7483440.6271180.6981130.660714RF0.7814560.7142850.7017540.707964XGBoost0.7615890.7446800.5932200.660377MLP0.7748340.68750.6346150.659999為能更深入剖析訓(xùn)練集規(guī)模對(duì)模型預(yù)測(cè)效果所產(chǎn)生的影響,本文把訓(xùn)練集的占比設(shè)定在0.1至0.9這個(gè)范圍,并分別對(duì)LR、DT、RF、XGBoost這4個(gè)模型的預(yù)測(cè)效果給予記錄,具體情況如圖4-3所示,隨著訓(xùn)練集規(guī)模不斷增大,預(yù)測(cè)效果呈現(xiàn)出較為平緩的態(tài)勢(shì),而且四個(gè)模型的數(shù)據(jù)基本相近。圖4-3訓(xùn)練集規(guī)模對(duì)預(yù)測(cè)效果的影響圖4-4呈現(xiàn)出不同訓(xùn)練規(guī)模之下模型的運(yùn)行時(shí)間情況,當(dāng)中DT模型有較快的預(yù)測(cè)速度,都可在3毫秒之內(nèi)完成,XGBoost的訓(xùn)練時(shí)間相對(duì)長些,不過隨著訓(xùn)練規(guī)模的增大,其訓(xùn)練時(shí)間出現(xiàn)了減少的狀況,這或許是因?yàn)閄GBoost模型在規(guī)模較小的訓(xùn)練情況下需要花費(fèi)更多時(shí)間去構(gòu)建更為復(fù)雜的樹。圖4-4運(yùn)行時(shí)間分析5系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)架構(gòu)設(shè)計(jì)該系統(tǒng)是基于Flask框架來構(gòu)建的,運(yùn)用分層架構(gòu)設(shè)計(jì),前端借助Jinja2模板引擎來動(dòng)態(tài)渲染頁面,后端則結(jié)合SQLAlchemy達(dá)成數(shù)據(jù)持久化以及業(yè)務(wù)邏輯處理,還憑借著預(yù)訓(xùn)練的隨機(jī)森林模型完成糖尿病患病概率的預(yù)測(cè),用戶認(rèn)證模塊利用Flask-Login管理會(huì)話狀態(tài),用戶登錄之后依據(jù)角色權(quán)限訪問不同功能模塊。5.2模塊實(shí)現(xiàn)方法用戶認(rèn)證模塊借助PBKDF2-SHA256算法加密存儲(chǔ)密碼,注冊(cè)的時(shí)候調(diào)用generate_password_hash()生成哈希值,登錄的時(shí)候使用check_password_hash()驗(yàn)證密碼,數(shù)據(jù)輸入與預(yù)測(cè)模塊前端利用HTML表單收集用戶生理參數(shù),后端憑借try-except塊捕獲非法輸入,調(diào)用預(yù)訓(xùn)練的隨機(jī)森林模型計(jì)算患病概率。歷史記錄模塊借助外鍵關(guān)聯(lián)用戶表與預(yù)測(cè)記錄表,支持記錄的增刪改查操作,編輯的時(shí)候重新調(diào)用模型更新結(jié)果以保證一致性,對(duì)于管理員的模塊基于角色字段控制權(quán)限,實(shí)現(xiàn)對(duì)用戶信息的維護(hù)以及管理。5.3關(guān)鍵核心代碼#初始化與模型加載#初始化與模型加載fromflaskimportFlask,render_template,request,redirect,url_for,flashfromflask_loginimportLoginManager,UserMixin,login_user,login_required,logout_user,current_userfromflask_sqlalchemyimportSQLAlchemyfromwerkzeug.securityimportgenerate_password_hash,check_password_hashimportjoblibimportnumpyasnpapp=Flask(__name__)app.config['SECRET_KEY']='your_secret_key'#生產(chǎn)環(huán)境需替換為強(qiáng)隨機(jī)密鑰app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///diabetes.db'db=SQLAlchemy(app)login_manager=LoginManager(app)#加載預(yù)訓(xùn)練隨機(jī)森林模型model=joblib.load('rf_model.pkl')#數(shù)據(jù)庫模型定義classUser(db.Model,UserMixin):id=db.Column(db.Integer,primary_key=True)username=db.Column(db.String(150),unique=True,nullable=False)password=db.Column(db.String(150),nullable=False)role=db.Column(db.String(50),default='user')#角色字段:user/adminclassPatientData(db.Model):id=db.Column(db.Integer,primary_key=True)user_id=db.Column(db.Integer,db.ForeignKey('user.id'),nullable=False)pregnancies=db.Column(db.Integer)glucose=db.Column(db.Float)#其他生理參數(shù)字段(如血壓、BMI等)省略...prediction=db.Column(db.Float)#患病概率#用戶認(rèn)證模塊@login_manager.user_loaderdefload_user(user_id):returnUser.query.get(int(user_id))@app.route('/register',methods=['POST'])defregister():username=request.form['username']password=generate_password_hash(request.form['password'],method='pbkdf2:sha256')new_user=User(username=username,password=password)#默認(rèn)角色為userdb.session.add(new_user)mit()@app.route('/login',methods=['POST'])deflogin():user=User.query.filter_by(username=request.form['username']).first()ifuserandcheck_password_hash(user.password,request.form['password']):login_user(user)#Flask-Login管理會(huì)話#數(shù)據(jù)預(yù)測(cè)與存儲(chǔ)@app.route('/input_data',methods=['POST'])@login_requireddefinput_data():try:#接收并校驗(yàn)生理參數(shù)data=np.array([[float(request.form['glucose']),float(request.form['bmi']),]])#調(diào)用模型預(yù)測(cè)probability=model.predict_proba(data)[0][1]#持久化數(shù)據(jù)new_data=PatientData(user_id=current_user.id,glucose=request.form['glucose'],bmi=request.form['bmi'],prediction=probability)db.session.add(new_data)mit()exceptValueError:flash('輸入?yún)?shù)格式錯(cuò)誤')#管理員權(quán)限校驗(yàn)defadmin_required(func):@wraps(func)defwrapper(*args,**kwargs):ifcurrent_user.role!='admin':flash('權(quán)限不足')returnredirect(url_for('dashboard'))returnfunc(*args,**kwargs)returnwrapper@app.route('/admin/users')@admin_requireddefadmin_users():users=User.query.all()returnrender_template('admin_users.html',users=users)5.4界面實(shí)現(xiàn)與功能說明用戶登錄界面呈現(xiàn)于圖5-1,該界面展示出系統(tǒng)的身份驗(yàn)證入口,其界面較為簡潔,有支持用戶名以及密碼校驗(yàn)的功能,后端借助check_password_hash()來對(duì)密碼哈希值給予驗(yàn)證,以此保障安全性。圖5-1用戶登錄頁面注冊(cè)功能在圖5-2中有所呈現(xiàn),運(yùn)用PBKDF2-SHA256算法來對(duì)密碼進(jìn)行加密存儲(chǔ),以此防止敏感信息出現(xiàn)泄露的情況,同時(shí)借助數(shù)據(jù)庫的唯一性約束來避免用戶名出現(xiàn)重復(fù)的現(xiàn)象。圖5-2用戶注冊(cè)頁面以數(shù)據(jù)輸入以及預(yù)測(cè)功能作為核心模塊,用戶借助圖5-3所展示的生理數(shù)據(jù)輸入界面,提交懷孕次數(shù)、血糖水平、血壓等8項(xiàng)醫(yī)學(xué)參數(shù),前端利用HTML5的required與min屬性達(dá)成基礎(chǔ)校驗(yàn),而后端運(yùn)用try-except塊捕獲非法輸入并返回錯(cuò)誤提示。圖5-3生理數(shù)據(jù)輸入頁面格式化處理后的數(shù)據(jù)被輸入到隨機(jī)森林模型之中,隨后調(diào)用predict_proba()方法來計(jì)算患病的概率,計(jì)算得出的結(jié)果會(huì)以百分比的形式展示在圖5-4的預(yù)測(cè)結(jié)果界面上,原始數(shù)據(jù)以及預(yù)測(cè)值會(huì)被持久化存儲(chǔ)到數(shù)據(jù)庫里面。圖5-4預(yù)測(cè)結(jié)果頁面歷史記錄板塊如圖5-5所示,以表格方式展現(xiàn)出用戶所有的預(yù)測(cè)記錄,不僅支持?jǐn)?shù)據(jù)編輯和刪除操作,編輯時(shí)重新調(diào)用模型以便于及時(shí)更新預(yù)測(cè)成果,保證數(shù)據(jù)一致性。圖5-5歷史記錄頁面管理員功能借助角色字段給予控制,用戶管理界面呈現(xiàn)于圖5-6之中,該界面僅面向管理員開放,其會(huì)展示出所有注冊(cè)用戶的ID、用戶名以及角色信息,數(shù)據(jù)庫選用SQLite作為默認(rèn)的存儲(chǔ)引擎,借助SQLAlchemyORM達(dá)成User與PatientData實(shí)體的一對(duì)多關(guān)聯(lián),依靠外鍵約束來保障數(shù)據(jù)的完整性。模型加載與推理的過程被封裝在事務(wù)里,聯(lián)合Flask-Migrate支持表結(jié)構(gòu)的版本化管理,以此提升系統(tǒng)的健壯性,前端界面運(yùn)用響應(yīng)式設(shè)計(jì),可適配不同的終端設(shè)備,功能導(dǎo)航清晰明了,用戶體驗(yàn)較為流暢。圖5-6用戶管理頁面6總結(jié)與展望6.1總結(jié)本研究運(yùn)用機(jī)器學(xué)習(xí)技術(shù),設(shè)計(jì)并達(dá)成了一套糖尿病預(yù)測(cè)系統(tǒng),該系統(tǒng)以Flask框架作為核心來構(gòu)建Web應(yīng)用層,借助SQLAlchemy達(dá)成數(shù)據(jù)持久化,依靠隨機(jī)森林算法預(yù)測(cè)疾病概率,系統(tǒng)的功能模塊涉及用戶認(rèn)證、數(shù)據(jù)輸入、歷史管理以及權(quán)限控制,前端接口借助Jinja2模板引擎動(dòng)態(tài)呈現(xiàn),后端邏輯層運(yùn)用Python實(shí)現(xiàn),把模型推理過程封裝在事務(wù)里,保障了高并發(fā)場(chǎng)景下的穩(wěn)定性。實(shí)驗(yàn)顯示,隨機(jī)森林模型在皮馬印第安人數(shù)據(jù)集上的F1得分達(dá)到0.708,證實(shí)了其預(yù)測(cè)糖尿病的有效性,數(shù)據(jù)庫設(shè)計(jì)依照實(shí)體關(guān)系模型,其中用戶數(shù)據(jù)借助外鍵和預(yù)測(cè)結(jié)果相關(guān)聯(lián),以此保證數(shù)據(jù)完整性,系統(tǒng)采用PBKDF2-SHA256算法對(duì)用戶密碼進(jìn)行加密,并且結(jié)合FlaskLogin模塊實(shí)現(xiàn)會(huì)話管理安全,契合基本需求。整體結(jié)構(gòu)分層清晰,功能齊全,可為用戶提供便利的糖尿病風(fēng)險(xiǎn)評(píng)估服務(wù),為醫(yī)療救助決策提供參考。6.2展望糖尿病預(yù)測(cè)的整個(gè)研究進(jìn)程所花費(fèi)的時(shí)間比較長,本文重點(diǎn)圍繞構(gòu)建機(jī)器學(xué)習(xí)模型以及開展參數(shù)優(yōu)化工作來實(shí)現(xiàn)對(duì)糖尿病的預(yù)測(cè),還設(shè)計(jì)并完成了一個(gè)糖尿病預(yù)測(cè)系統(tǒng),該系統(tǒng)在篩查糖尿病高危人群以及降低糖尿病發(fā)病率這兩方面有著關(guān)鍵的意義,不過由于受到時(shí)間等多種因素的限制,本文的研究存在一些欠缺之處。建議未來的研究可從以下幾個(gè)方向進(jìn)行優(yōu)化:(1)優(yōu)化特征選擇工作,引入像遞歸特征消除或者LASSO回歸這類技術(shù),以此篩選出關(guān)鍵屬性,提升模型在未見過數(shù)據(jù)上的泛化能力。(2)豐富模型支持方面,擴(kuò)展系統(tǒng)接口,集成邏輯回歸、支持向量機(jī)等多種算法,讓用戶能依據(jù)實(shí)際需求靈活挑選預(yù)測(cè)模型。(3)加強(qiáng)安全保障舉措,采用OAuth2.0協(xié)議達(dá)成安全的第三方登錄,同時(shí)增添CSRF保護(hù)機(jī)制,有效防范潛在安全威脅。(4)改進(jìn)部署并拓展應(yīng)用,利用Docker容器技術(shù)封裝系統(tǒng)組件,結(jié)合Nginx和Gunicorn提升服務(wù)的性能與可擴(kuò)展性,并且探索與醫(yī)療機(jī)構(gòu)合作,接入實(shí)時(shí)生理監(jiān)測(cè)數(shù)據(jù)流,構(gòu)建動(dòng)態(tài)健康預(yù)警平臺(tái),推動(dòng)系統(tǒng)在智慧醫(yī)療領(lǐng)域落地應(yīng)用。

參考文獻(xiàn)李芳君.基于機(jī)器學(xué)習(xí)的醫(yī)學(xué)數(shù)據(jù)分類算法研究[D].山東大學(xué),2021.趙培培.機(jī)器學(xué)習(xí)多種算法在糖尿病檢測(cè)分類中的應(yīng)用研究[D].蘭州大學(xué),2018.石靜靜,王書真,王艷佩.基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)技術(shù)探討[J].數(shù)字技術(shù)與應(yīng)用,2019,(3):247-247.馬青霞.機(jī)器學(xué)習(xí)的技術(shù)特點(diǎn)及發(fā)展現(xiàn)狀[J].金陵科技學(xué)院學(xué)報(bào),2021,27(4):29-34.洪燁.基于機(jī)器學(xué)習(xí)算法的糖尿病預(yù)測(cè)模型研究[D].哈爾濱工業(yè)大學(xué),2017.馬曉軍.外周血C肽、糖化血紅蛋白和血糖水平與2型糖尿病患者并發(fā)癥發(fā)生關(guān)系及其預(yù)測(cè)價(jià)值研究[J].陜西醫(yī)學(xué)雜志,2023,52(09):1211-1213.PatiA,ParhiM,PattanayakKB.Areviewonpredictionofdiabetesusingmachinelearninganddataminingclassificationtechniques[J].InternationalJournalofBiomedicalEngineeringandTechnology,2023,41(1):83-109.ExellMF,XaveriusFF,PaulGS,etal.Diabetespredictionusingsupervisedmachinelearning[J].ProcediaComputerScience,2023,21621-30.邵韋巧.機(jī)器學(xué)習(xí)分類算法對(duì)糖尿病數(shù)據(jù)應(yīng)用研究[D].蘭州大學(xué),2021.洪燁.基于機(jī)器學(xué)習(xí)算法的糖尿病預(yù)測(cè)模型研究[D].哈爾濱工業(yè)大學(xué),2017.ShamreenBA,S.MA,V.OAN.DiabetesMellitusDiseasePredictionUsingMachineLearningClassifierswithOversamplingandFeatureAugmentation[J].AdvancesinHuman-ComputerInteraction,2022,2022QingL,QingZ,YifengH,etal.Predictingthe2-YearRiskofProgressionfromPrediabetestoDiabetesUsingMachineLearningamongChineseElderlyAdults[J].JournalofPersonalizedMedicine,2022,12(7):1055-1055.homasZ,SimonS,MathiasK,etal.MachineLearningforPredictingtheRiskofTransitionfromPrediabetestoDiabetes.[J].Diabetestechnologytherapeutics,2022,24(11):PredictingDiabetesusingSVMImplementedbyMachine

溫馨提示

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