国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python基于邏輯回歸的糖尿病視網(wǎng)膜病變檢測(數(shù)據(jù)集messidor_features.arff)

Tangpj / 2703人閱讀

摘要:一引言本項目基于邏輯回歸理論,運用語言對數(shù)據(jù)集進(jìn)行分析,實現(xiàn)對糖尿病視網(wǎng)膜病變的檢測??梢源_定這五個變量是導(dǎo)致糖尿病視網(wǎng)膜病變的主要因素。

一. 引言
本項目基于邏輯回歸理論,運用Python語言對數(shù)據(jù)集messidor_features.arff進(jìn)行分析,實現(xiàn)對糖尿病視網(wǎng)膜病變的檢測。糖尿病視網(wǎng)膜病變(DR)是糖尿病最常見的微血管并發(fā)癥之一,是慢性進(jìn)行性糖尿病導(dǎo)致的視網(wǎng)膜微血管滲漏和阻塞從而引起一系列的眼底病變,如微血管瘤、硬性滲出、黃班水腫甚至視網(wǎng)膜脫離。DR檢測對于糖尿病人群篩查、糖尿病患者早期治療具有重要意義。

二. 數(shù)據(jù)集描述
1. 下載地址messidor_features.arff
2. 數(shù)據(jù)集開頭有一些描述信息,訓(xùn)練是用不到的,我選擇刪掉,方便用pd.read_csv()函數(shù)讀取。

當(dāng)然不刪也是可以的,有專門的函數(shù)讀取.arff文件

from scipy.io import arffimport pandas as pddf = arff.loadarff("messidor_features.arff") #讀取出來是一個元組dataframe = pd.DataFrame(df[0])

3.數(shù)據(jù)集messidor_features.arff包含從 Messidor 圖像集中提取的特征,用于預(yù)測圖像是否包含糖尿病視網(wǎng)膜病變的跡象。所有特征都代表檢測到的病變、解剖部位的描述特征或圖像級描述符。該數(shù)據(jù)集有20條屬性,類標(biāo)簽是最后一條,如圖。

4. 對數(shù)據(jù)集有大概了解后,來簡單探索性分析一下它。首先查看data.info(),看看有沒有缺失值及數(shù)據(jù)類型。

import pandas as pdpath="E:/Python_file/zuoye/messidor_features.arff"Cnames = ["x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9",      "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "y"]#刪掉與數(shù)據(jù)集無關(guān)的內(nèi)容data=pd.read_csv(path,header=None,names=Cnames)print("數(shù)據(jù)集基礎(chǔ)信息:")print(data.info())

可以看到數(shù)據(jù)里沒有缺失值。再統(tǒng)計一下,類標(biāo)簽為‘1’的數(shù)據(jù)有611條,占比為53.1%;標(biāo)簽為‘0’的數(shù)據(jù)有540條,占比為46.9%。說明正例數(shù)據(jù)與負(fù)例數(shù)據(jù)的數(shù)量分布是均衡的。
5. 這里推薦使用pandas-profiling庫,可以一鍵生成對數(shù)據(jù)集的分析報告,非常好用。沒有安裝的話用pip install pandas_profiling 命令安裝一下。

import pandas_profilingreport= pandas_profiling.ProfileReport(data)report.to_file("output_file.html")

運行后生成一個可交互的.html文件,通常包含對數(shù)據(jù)的類型檢測;計算唯一值、缺失值;分位數(shù)統(tǒng)計如最小最大值、四分位數(shù)、中位數(shù)等;描述統(tǒng)計如平均數(shù)、眾數(shù)、峰度偏度等;變量間相關(guān)系數(shù)的熱力圖,等等。
我們來看看該數(shù)據(jù)集下各屬性間用Spearman秩相關(guān)系數(shù)(ρ)描述的單調(diào)相關(guān)的度量熱力圖,ρ的值介于-1和+1之間,-1表示完全負(fù)單調(diào)相關(guān),0表示沒有單調(diào)相關(guān),1表示完全正單調(diào)相關(guān)。

三. 方法介紹
邏輯回歸的原理有很多博主寫的很好,我就不班門弄斧了,主要說說代碼。利用sklearn庫提供的LogisticRegression()可以很方便的完成訓(xùn)練和預(yù)測。

from sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitX=data[data.columns[0:19]] #提取特征,不要標(biāo)簽y=data["y"]                #train_size=0.8,80%的訓(xùn)練集占比x_train,x_test,y_train,y_test=train_test_split(X,y,train_size=0.8,random_state=90)lr=LogisticRegression(max_iter=3000)clm=lr.fit(x_train,y_train)print("對測試集的預(yù)測結(jié)果:")#輸出預(yù)測結(jié)果、預(yù)測結(jié)果的結(jié)構(gòu)類型及尺寸result=clm.predict(x_test)

LogisticRegression()的參數(shù)很多,但需要設(shè)置的不多。我們的數(shù)據(jù)集是分布均衡的,參數(shù)類別權(quán)重class_weight不需要設(shè)置;關(guān)于參數(shù)優(yōu)化算法solver用默認(rèn)的‘liblinear’就好,因為這是二分類問題(只看有沒有病變),而且我們是小數(shù)據(jù)集,也用不到面向大數(shù)據(jù)集的‘sag’和‘saga’;而max_iter是設(shè)置迭代次數(shù),如果小了,可能模型沒收斂就運行結(jié)束了,這里我設(shè)置為3000次。

四. 結(jié)果和模型評價及可視化
1.測試集的檢測結(jié)果如圖,1代表有病變,0代表沒有。要注意的是劃分訓(xùn)練集和測試集時,random_state等于不同的值,會得到不同的測試集,我這里是random_state=90,改成其他數(shù),預(yù)測結(jié)果就和我不同,但對模型評價沒有影響。

2. 模型評價的指標(biāo)有很多,比如召回率、精度、準(zhǔn)確率、F統(tǒng)計量、決定系數(shù)R2、ROC曲線的包絡(luò)面積AUC等??梢杂胏lassification_report()一鍵生成評估報告。

from sklearn.metrics import classification_reportprint("性能報告;")print(classification_report(y_test,result))confusion = metrics.confusion_matrix(y_test, result)


3. 以FPR為橫軸,TPR為縱軸,繪制ROC曲線,并由曲線計算得AUC=0.77。

from sklearn.metrics import roc_curve,aucfrom matplotlib import pyplot as pltfpr, tpr, thr = roc_curve(y_test, result, drop_intermediate=False)fpr, tpr = [0] + list(fpr), [0] + list(tpr)plt.plot(fpr, tpr)plt.title("ROC curve for diabetes classifier")plt.xlabel("False Positive Rate (1 - Specificity)")plt.ylabel("True Positive Rate (Sensitivity)")plt.grid(True)plt.show()print("AUC:"+ str(auc(fpr,tpr)))


該模型的檢測能力還是可以的。
4. 從邏輯回歸模型中導(dǎo)出各個變量的回歸系數(shù),由此作出重要程度的條形圖。

print("邏輯回歸各變量系數(shù):")print(clm.coef_)coef_lr = pd.DataFrame({"var" : x_test.columns,                        "coef" : clm.coef_.flatten()                        })index_sort =  np.abs(coef_lr["coef"]).sort_values().indexcoef_lr_sort = coef_lr.loc[index_sort,:]# 水平柱形圖繪圖fig,ax=plt.subplots()x, y = coef_lr_sort["var"], coef_lr_sort["coef"]rects = plt.barh(x, y, color="dodgerblue")plt.grid(linestyle="-.", axis="y", alpha=0.4)plt.tight_layout()#添加數(shù)據(jù)標(biāo)簽for rect in rects:    w = rect.get_width()    ax.text(w, rect.get_y()+rect.get_height()/2,"%.2f" %w,ha="left",va="center")


邏輯回歸就是把線性回歸的結(jié)果輸入到了sigmoid函數(shù),所以各變量的系數(shù)還是有的。

可以看到對視網(wǎng)膜病變檢測結(jié)果影響最大的五個變量分別是x14,x1,x2,x0,x15,它們的含義參照上文。可以確定這五個變量是導(dǎo)致糖尿病視網(wǎng)膜病變的主要因素。

五. 完整代碼

import pandas as pdfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_scorefrom sklearn.metrics import classification_reportfrom sklearn import metricsfrom sklearn.metrics import roc_curve,aucfrom matplotlib import pyplot as pltimport numpy as nppath="/content/drive/MyDrive/messidor_features.arff"Cnames = ["x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9",      "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "y"]#首先刪掉與數(shù)據(jù)集無關(guān)的內(nèi)容data=pd.read_csv(path,header=None,names=Cnames)X=data[data.columns[0:19]] y=data["y"]x_train,x_test,y_train,y_test=train_test_split(X,y,train_size=0.8,random_state=90)lr=LogisticRegression(max_iter=3000)clm=lr.fit(x_train,y_train)print("對測試集的預(yù)測結(jié)果:")#輸出預(yù)測結(jié)果、預(yù)測結(jié)果的結(jié)構(gòu)類型及尺寸result=clm.predict(x_test)print(result,type(result),result.shape) print("模型評分:"+ str(clm.score(x_test,y_test))) #用決定系數(shù)來打分print("性能報告;")print(classification_report(y_test,result))confusion = metrics.confusion_matrix(y_test, result)print("混淆矩陣:")print(confusion)TP = confusion[1, 1]TN = confusion[0, 0]FP = confusion[0, 1]FN = confusion[1, 0]print("TPR(正確識別的正例數(shù)據(jù)在實際正例數(shù)據(jù)中的占比):"+str(TP/(TP + FN)))print("TNR(正確識別的負(fù)例數(shù)據(jù)在實際負(fù)例數(shù)據(jù)中的占比):"+str(TN/(TN + FP)))print("Accuracy score: ", format(accuracy_score(y_test, result)))print("Precision score: ", format(precision_score(y_test, result)))print("Recall score: ", format(recall_score(y_test, result)))print("F1 score: ", format(f1_score(y_test, result)))fpr, tpr, thr = roc_curve(y_test, result, drop_intermediate=False)fpr, tpr = [0] + list(fpr), [0] + list(tpr)plt.plot(fpr, tpr)plt.title("ROC curve for diabetes classifier")plt.xlabel("False Positive Rate (1 - Specificity)")plt.ylabel("True Positive Rate (Sensitivity)")plt.grid(True)plt.show()print("AUC:"+ str(auc(fpr,tpr)))print("邏輯回歸各變量系數(shù):")print(clm.coef_)coef_lr = pd.DataFrame({"var" : x_test.columns,                        "coef" : clm.coef_.flatten()                        })index_sort =  np.abs(coef_lr["coef"]).sort_values().indexcoef_lr_sort = coef_lr.loc[index_sort,:]# 水平柱形圖繪圖fig,ax=plt.subplots()x, y = coef_lr_sort["var"], coef_lr_sort["coef"]rects = plt.barh(x, y, color="dodgerblue")plt.grid(linestyle="-.", axis="y", alpha=0.4)plt.tight_layout()#添加數(shù)據(jù)標(biāo)簽for rect in rects:    w = rect.get_width()    ax.text(w, rect.get_y()+rect.get_height()/2,"%.2f" %w,ha="left",va="center")

如果有錯,還望指正。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/124492.html

相關(guān)文章

  • 用Faster R-CNN、ResNet診斷皮膚病,深度學(xué)習(xí)再次超越人類專家

    摘要:過去的測試包括,在皮膚病診斷中的表現(xiàn)大致上和人類專家持平。和其同事也在皮膚癌等其他皮膚病上測試了深度學(xué)習(xí)。使用數(shù)據(jù)集進(jìn)行驗證時,基底細(xì)胞癌診斷的敏感度是。 人工智能目前在與專業(yè)醫(yī)生的能力對比上還罕有勝跡。但深度神經(jīng)網(wǎng)絡(luò)方法最近已經(jīng)可以在灰指甲這一真菌疾病的診斷上擊敗 42 名皮膚科專家了——這種疾病每年困擾著 3500 萬美國人。人工智能在醫(yī)療領(lǐng)域的這一巨大成功很大程度上得歸功于韓國研究者提...

    張金寶 評論0 收藏0
  • 人工智能時代降臨

    摘要:周二,白宮發(fā)布了一份關(guān)于人工智能與經(jīng)濟(jì)的令人寒心的報告。更重要的是,我們必須超越這種狹隘的思考方式受到人工智能威脅的工作崗位。今年,最矚目的人工智能與人類的對決就來自。然而,人工智能在年碾壓人類的一系列勝利僅僅是個開始。 showImg(https://segmentfault.com/img/remote/1460000008189557?w=1280&h=800); 去年以來關(guān)于人...

    animabear 評論0 收藏0
  • TensorFlow-dev-summit:那些TensorFlow上好玩和黑科技

    摘要:現(xiàn)場宣布全球領(lǐng)先的深度學(xué)習(xí)開源框架正式對外發(fā)布版本,并保證的本次發(fā)布版本的接口滿足生產(chǎn)環(huán)境穩(wěn)定性要求。有趣的應(yīng)用案例皮膚癌圖像分類皮膚癌在全世界范圍內(nèi)影響深遠(yuǎn),患病人數(shù)眾多,嚴(yán)重威脅身體機(jī)能。 前言本文屬于介紹性文章,其中會介紹許多TensorFlow的新feature和summit上介紹的一些有意思的案例,文章比較長,可能會花費30分鐘到一個小時Google于2017年2月16日(北京時間...

    BLUE 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<