多標籤分類 體檢資料分析病人 keras

2021-09-29 04:55:07 字數 2759 閱讀 3766

最近在讀**的的過程中接觸到多標籤分類(multi-label classification)的任務,必須要強調的是多標籤(multi-label)分類任務 和 多分類(multi-class)任務的區別:

這裡筆者強調一下多標籤分類任務的兩個特點:

多標籤分類演算法比較常用的有ml-knn、ml-dt、rank-svm、cml等。我就不多介紹這些基於傳統機器學習的方法,感興趣的同學可以自己去研究。這裡主要介紹如何採用深度學習模型做多標籤分類任務,首先我們必須明確一下多標籤分類模型的輸入和輸出。

模型輸入輸出

假設我們有乙個體檢疾病判斷任務:通過乙份體檢報告判斷乙個人是否患有以下五種病:有序排列——[高血壓,高血糖,肥胖,肺結核,冠心病]

輸入:乙份體檢報告

輸出:[1,0,1,0,0 ] ,其中1代表該位置的患病,0代表沒患病。所以這個label的含義:患者有高血壓和肥胖。

模型架構

接下來如何建立模型呢:

當然你可以對label的每乙個維度分別進行建模,訓練5個二分類器。

但是這樣不僅是的label之間的依賴關係被破壞,而且還耗時耗力。接下來我們還是來看看深度神經網路是如何應用於此問題的。其架構如下:

有點類似 structure learing ,最終模型的輸出就是乙個結構序列。

匯入必要的python包。

import scipy

import pandas as pd

from scipy.io import arff

from sklearn.model_selection import train_test_split

from keras.layers import dense

import numpy as np

載入資料

資料預處理

這裡沒有做太多的eda,資料清洗等工作,只是將將資料的feature和label分開,同時將資料分成訓練集合測試集。

x = df.iloc[:,0:103].values

y = df.iloc[:,103:117].values

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)

y_train = y_train.astype(np.float64)

y_test = y_test.astype(np.float64)

模型定義

按照上文所描述的模型架構,搭建了乙個2層的神經網路,每層神經元個數分別是500和100。

def deep_model(feature_dim,label_dim):

from keras.models import sequential

from keras.layers import dense

model = sequential()

print("create model. feature_dim ={}, label_dim ={}".format(feature_dim, label_dim))

model.add(dense(500, activation='relu', input_dim=feature_dim))

model.add(dense(100, activation='relu'))

model.add(dense(label_dim, activation='sigmoid'))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

return model

模型訓練

定義好batch_size,訓練輪數epoch,將處理好的資料餵給模型,就可以跑起來了。

def train_deep(x_train,y_train,x_test,y_test):

feature_dim = x_train.shape[1]

label_dim = y_train.shape[1]

model = deep_model(feature_dim,label_dim)

model.summary()

model.fit(x_train,y_train,batch_size=16, epochs=5,validation_data=(x_test,y_test))

train_deep(x_train,y_train,x_test,y_test)

模型架構和訓練過程如下圖所示:模型訓練5輪,驗證集準確率就達到0.8

在現實生活中很多地方都會用到多標籤分類,因為就拿使用者畫像來說,乙個人身上很少只被貼上乙個標籤,人是複雜的,通常是各種標籤,各種人設的集合。所以模型必須學會如何分辨和識別乙個帶有多個標籤的複雜的事物,這樣的模型才會是更聰明的模型。

資料分析分類

按照資料分析的實時性,可分為實時資料分析和離線分析兩種。實時分析,一般用於金融 移動和網際網路b2c等產品,往往要求在數秒內返回上億行資料的分析,從而達到不影響使用者體驗的目的。實時分析工具有emc的greenplum,sap的hana等。對大多數反饋時間要求不那麼嚴苛的應用,可以採用離線分析的方式...

資料分析方向分類

一 面向工具 1.1 資料分析與sas sas時間序列分析 1.2 資料分析 展現與r語言 1.2.1 r其中 之金融資料分析quantmod 1.2.2 r七種 之資料視覺化包ggplot2 1.2.3 r七種 之生命資料分析bloconductor 1.3 資料分析與spss 1.4 快速資料探...

資料分析有哪些分類?

按資料分析面對的問題不同分類 戰略 運營 戰略分析 是為了解決公司戰略方向問題,回答要向 去的問題。此類分析通常比較巨集觀,需要分析者有大局觀 有戰略思維 所用的資料除了公司內部的資料,還需要競品資料 行業資料。戰略分析的方法 需要從競品及行業資料中發現行業發展趨勢及競品的戰略定位,同時結合公司內部...