如何使用乳腺癌數(shù)據(jù)集的人工神經(jīng)網(wǎng)絡(luò)?
介紹在本文中,我們將學(xué)習(xí)一種深度學(xué)習(xí)技術(shù)如何用于尋找乳腺癌數(shù)據(jù)集的準(zhǔn)確性,但我知道大多數(shù)技術(shù)人員不知道我在說(shuō)什么,我們將從基礎(chǔ)開(kāi)始,然后繼續(xù)討論我們的主題。首先我們簡(jiǎn)單介紹一下深度學(xué)習(xí),什么是人工神經(jīng)網(wǎng)絡(luò)?什么是深度學(xué)習(xí)?如果我們談?wù)撋疃葘W(xué)習(xí),那么可以簡(jiǎn)單地理解它是機(jī)器學(xué)習(xí)的一個(gè)子集。我們可以說(shuō)深度學(xué)習(xí)是一種人工智能功能,它模仿人腦并處理該數(shù)據(jù)并創(chuàng)建用于決策的模式。深度學(xué)習(xí)是一種類似于人腦的機(jī)器學(xué)習(xí)類型,它使用稱為神經(jīng)網(wǎng)絡(luò)的多層算法結(jié)構(gòu)。它的算法試圖復(fù)制人類將使用給定邏輯結(jié)構(gòu)分析數(shù)據(jù)的數(shù)據(jù)。它也被稱為深度神經(jīng)網(wǎng)絡(luò)或深度神經(jīng)學(xué)習(xí)。
在深度學(xué)習(xí)中有一個(gè)叫做人工神經(jīng)網(wǎng)絡(luò)的概念,我們將在下面簡(jiǎn)要討論:人工神經(jīng)網(wǎng)絡(luò)顧名思義,人工神經(jīng)網(wǎng)絡(luò),就是人工神經(jīng)元的網(wǎng)絡(luò)。它指的是模仿大腦的生物啟發(fā)模型。可以說(shuō),構(gòu)建人腦結(jié)構(gòu)的通常是基于生物神經(jīng)網(wǎng)絡(luò)的計(jì)算網(wǎng)絡(luò)。大家都知道,在我們的大腦中,神經(jīng)元是相互連接和傳遞數(shù)據(jù)的過(guò)程。它類似于人腦神經(jīng)元之間相互連接,神經(jīng)網(wǎng)絡(luò)由大量人工神經(jīng)元組成,稱為按層順序排列的單元。具有各層神經(jīng)元并形成一個(gè)完整的網(wǎng)絡(luò)。這些神經(jīng)元被稱為節(jié)點(diǎn)。它由三層組成,分別是:輸入層隱藏層輸出層
使用乳腺癌數(shù)據(jù)集創(chuàng)建ANN現(xiàn)在我們進(jìn)入我們的主題,這里我們將采用數(shù)據(jù)集,然后創(chuàng)建人工神經(jīng)網(wǎng)絡(luò)并對(duì)診斷進(jìn)行分類。首先,我們采用乳腺癌的數(shù)據(jù)集,然后繼續(xù)前進(jìn)。乳腺癌數(shù)據(jù)集:https://www.kaggle.com/uciml/breast-cancer-wisconsin-data下載數(shù)據(jù)集后,我們將導(dǎo)入所需的重要庫(kù)。導(dǎo)入庫(kù)#import pandas
import pandas as pd
#import numpy
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
這里我們導(dǎo)入了 pandas、NumPy 和一些可視化庫(kù),F(xiàn)在我們使用pandas加載我們的數(shù)據(jù)集:df = pd.read_csv('Breast_cancer.csv')
df
在此數(shù)據(jù)集中,我們指向**“diagnosis”**特征列,因此我們使用 Pandas 檢查該列的值計(jì)數(shù):# counting values of variables in 'diagnosis'
df['diagnosis'].value_counts()
現(xiàn)在為了更好地理解,我們可視化“diagnosis列”的值計(jì)數(shù)?梢暬涤(jì)數(shù)plt.figure(figsize=[17,9])
sb.countplot(df['diagnosis'].value_counts())
plt.show()
空值在數(shù)據(jù)集中,我們必須檢查我們使用pandas的變量中是否存在空值:df.isnull().sum()
執(zhí)行程序后,我們得出結(jié)論,特征名稱“Unnamed:32”包含所有空值,因此我們刪除該列。#droping feature
df.drop(['Unnamed: 32','id'],axis=1,inplace=True)
自變量和因變量現(xiàn)在是時(shí)候?qū)?shù)據(jù)集劃分為自變量和因變量了,為此我們創(chuàng)建了兩個(gè)變量,一個(gè)代表自變量,另一個(gè)代表因變量。# independent variables
x = df.drop('diagnosis',axis=1)
#dependent variables
y = df.diagnosis
處理分類值當(dāng)我們打印因變量y 時(shí),我們看到其中包含分類數(shù)據(jù),我們必須將分類數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制格式以進(jìn)行進(jìn)一步處理,因此我們使用 Scikit learn Label Encoder 對(duì)分類數(shù)據(jù)進(jìn)行編碼。from sklearn.preprocessing import LabelEncoder
#creating the object
lb = LabelEncoder()
y = lb.fit_transform(y)
拆分?jǐn)?shù)據(jù)現(xiàn)在是時(shí)候?qū)?shù)據(jù)拆分為訓(xùn)練和測(cè)試部分了:from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size=0.3,random_state=40)
縮放數(shù)據(jù)當(dāng)我們創(chuàng)建人工神經(jīng)網(wǎng)絡(luò)時(shí),我們必須將數(shù)據(jù)縮放為更小的數(shù)字,因?yàn)樯疃葘W(xué)習(xí)算法將節(jié)點(diǎn)的權(quán)重和輸入數(shù)據(jù)相乘,這需要大量時(shí)間,因此為了減少該時(shí)間,我們縮放數(shù)據(jù)。對(duì)于縮放,我們使用 scikit learn StandardScaler模塊,我們縮放訓(xùn)練和測(cè)試數(shù)據(jù)集:#importing StandardScaler
from sklearn.preprocessing import StandardScaler
#creating object
sc = StandardScaler()
xtrain = sc.fit_transform(xtrain)
xtest = sc.transform(xtest)
從這里我們開(kāi)始創(chuàng)建人工神經(jīng)網(wǎng)絡(luò),為此我們導(dǎo)入用于創(chuàng)建 ANN 的重要庫(kù):#importing keras
import keras
#importing sequential module
from keras.models import Sequential
# import dense module for hidden layers
from keras.layers import Dense
#importing activation functions
from keras.layers import LeakyReLU,PReLU,ELU
from keras.layers import Dropout
創(chuàng)建層導(dǎo)入這些庫(kù)后,我們創(chuàng)建了三種類型的層:輸入層隱藏層輸出層首先,我們創(chuàng)建模型:#creating model
classifier = Sequential()
Sequential模型適用于每一層恰好有一個(gè)輸入張量和一個(gè)輸出張量的平面堆棧,F(xiàn)在我們創(chuàng)建神經(jīng)網(wǎng)絡(luò)的層:#first hidden layer
classifier.a(chǎn)dd(Dense(units=9,kernel_initializer='he_uniform',activation='relu',input_dim=30))
#second hidden layer
classifier.a(chǎn)dd(Dense(units=9,kernel_initializer='he_uniform',activation='relu'))
# last layer or output layer
classifier.a(chǎn)dd(Dense(units=1,kernel_initializer='glorot_uniform',activation='sigmoid'))
在以下代碼中,使用 Dense 方法創(chuàng)建圖層,因?yàn)槲覀兪褂没緟?shù)。第一個(gè)參數(shù)是輸出節(jié)點(diǎn)第二個(gè)是內(nèi)核權(quán)重矩陣的初始化器第三個(gè)是激活函數(shù)最后一個(gè)參數(shù)是輸入節(jié)點(diǎn)或獨(dú)立特征的數(shù)量。執(zhí)行此代碼后,我們使用以下方法對(duì)其進(jìn)行總結(jié):#taking summary of layers
classifier.summary()
編譯人工神經(jīng)網(wǎng)絡(luò)現(xiàn)在我們用優(yōu)化器編譯我們的模型:#compiling the ANN
classifier.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
將 ANN 擬合到訓(xùn)練數(shù)據(jù)中編譯模型后,我們必須將 ANN 擬合到訓(xùn)練數(shù)據(jù)中以進(jìn)行預(yù)測(cè): #fitting the ANN to the training set
model = classifier.fit(xtrain,ytrain,batch_size=100,epochs=100)
fit()方法將神經(jīng)網(wǎng)絡(luò)與訓(xùn)練數(shù)據(jù)進(jìn)行擬合,在參數(shù)中設(shè)置batch_size、epochs等變量的具體值。在訓(xùn)練數(shù)據(jù)之后,我們還要對(duì)測(cè)試數(shù)據(jù)的準(zhǔn)確性評(píng)分進(jìn)行測(cè)試,如下所示:#now testing for Test data
y_pred = classifier.predict(test)
在執(zhí)行此代碼時(shí),我們發(fā)現(xiàn) y_pred 包含不同的值,因此我們將預(yù)測(cè)值轉(zhuǎn)換為閾值,如True, False。#converting values
y_pred = (y_pred>0.5)
print(y_pred)
分?jǐn)?shù)和混淆矩陣現(xiàn)在我們檢查混淆矩陣和預(yù)測(cè)值的分?jǐn)?shù)。from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
cm = confusion_matrix(ytest,y_pred)
score = accuracy_score(ytest,y_pred)
print(cm)
print('score is:',score)
輸出:
可視化混淆矩陣在這里,我們可視化預(yù)測(cè)值的混淆矩陣# creating heatmap of comfussion matrix
plt.figure(figsize=[14,7])
sb.heatmap(cm,annot=True)
plt.show()
可視化數(shù)據(jù)歷史現(xiàn)在我們可視化每個(gè)時(shí)期的損失和準(zhǔn)確性。# list all data in history
print(model.history.keys())
# summarize history for accuracy
plt.plot(model.history['accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
# summarize history for loss
plt.plot(model.history['loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
保存模型最后,我們保存我們的模型#saving the model
classifier.save('File_name.h5')

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
ChatZOC,藏在口袋里的「眼科醫(yī)生」
-
金百澤科技亮相中國(guó)國(guó)際醫(yī)療器械博覽會(huì) | 盡顯醫(yī)療領(lǐng)域硬實(shí)力
-
進(jìn)階的新冠疫苗 又一個(gè)中國(guó)造
-
“AI醫(yī)療第一股”鷹瞳科技上市首日即破發(fā)
-
圓心科技登陸港股,“賣(mài)藥的生意”還好不好做?
-
十圖解讀2021年中國(guó)康復(fù)醫(yī)療行業(yè)現(xiàn)狀
-
醫(yī)藥流通數(shù)字化運(yùn)營(yíng)實(shí)現(xiàn)精細(xì)化飼養(yǎng)
-
科學(xué)家發(fā)現(xiàn)人體新器官:將有助于癌癥治療
技術(shù)文庫(kù)
最新活動(dòng)更多
-
7.30-8.1火熱報(bào)名中>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
7月30-31日報(bào)名參會(huì)>>> 全數(shù)會(huì)2025中國(guó)激光產(chǎn)業(yè)高質(zhì)量發(fā)展峰會(huì)
-
精彩回顧立即查看>> 【線下論壇】新唐科技2025新品發(fā)布會(huì)
-
精彩回顧立即查看>> 【在線會(huì)議】研華嵌入式核心優(yōu)勢(shì),以Edge AI驅(qū)動(dòng)機(jī)器視覺(jué)升級(jí)
-
精彩回顧立即查看>> OFweek 2025(第十四屆)中國(guó)機(jī)器人產(chǎn)業(yè)大會(huì)
-
精彩回顧立即查看>> 【在線會(huì)議】從直流到高頻,材料電特性參數(shù)的全面表征與測(cè)量
-
10 “意外”的藥明康德
- 1 2025高端醫(yī)療器械國(guó)產(chǎn)替代提速,這些賽道值得關(guān)注!
- 2 多數(shù)人錯(cuò)估了關(guān)稅將對(duì)中國(guó)醫(yī)藥產(chǎn)業(yè)的影響
- 3 一季度醫(yī)療儀器及器械進(jìn)出口報(bào)告:前十大出口市場(chǎng)在哪?
- 4 認(rèn)購(gòu)火爆,映恩生物打響18A IPO重啟信號(hào)槍
- 5 中國(guó)創(chuàng)新藥出海:機(jī)遇、挑戰(zhàn)與未來(lái)展望
- 6 核藥賽道解碼:高壁壘、國(guó)產(chǎn)替代與千億市場(chǎng)卡位
- 7 創(chuàng)新藥是避風(fēng)港,更是發(fā)射臺(tái)!
- 8 第一醫(yī)藥扣非凈利潤(rùn)僅687.40萬(wàn)元:上海“隱形土豪”要再沉淀沉淀
- 9 隱匿的醫(yī)療大佬,10年干出千億級(jí)公司
- 10 外骨骼機(jī)器人,誰(shuí)是盈利最強(qiáng)企業(yè)?