-
大小: 13KB文件類型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-06-06
- 語言: Python
- 標簽: 二分類??tensorflow??
資源簡介
使用tensorflow集成的神經(jīng)網(wǎng)絡(luò)實現(xiàn)的基于糖尿病數(shù)據(jù)的二分類的python實現(xiàn),內(nèi)含代碼、分配好的數(shù)據(jù)集以及調(diào)參過程,代碼中有詳細的注釋以及可視化操作。歡迎下載交流!

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
“““
Created?on?Fri?Oct?26?14:56:45?2018
@author:?Fang
“““
import?tensorflow?as?tf
import?numpy?as?np
import?matplotlib.pyplot?as?plt
#from?sklearn.preprocessing?import?StandardScaler?#標準化
#from?sklearn.preprocessing?import?Normalizer
from?sklearn.preprocessing?import?MinMaxScaler
from?sklearn.metrics?import?confusion_matrix
def?load_data():
????‘‘‘
????加載訓(xùn)練集和測試集,并將數(shù)據(jù)轉(zhuǎn)化為矩陣
????training_data???訓(xùn)練集,包含461條數(shù)據(jù)
????test_data???????測試集,包含307條數(shù)據(jù)
????‘‘‘
????file1?=?‘diabetes_data.txt‘?
????p?=?open(file1)
????lines?=?p.readlines()
????n?=?len(lines)
????datamat?=?np.zeros((n9))
????row?=?0
????for?i?in?lines:
????????i?=?i.strip().split(‘‘)
????????datamat[row:]?=?i[:]
????????row?+=?1
????training_data?=?datamat[::]
????X?=?training_data[:1:8]
????file2?=?‘diabetes_test.txt‘?
????p1?=?open(file2)
????line?=?p1.readlines()
????n1?=?len(line)
????datamat2?=?np.zeros((n19))
????row1?=?0
????for?i?in?line:
????????i?=?i.strip().split(‘‘)
????????datamat2[row1:]?=?i[:]
????????row1?+=?1
????test_data?=?datamat2[::]
????Y?=?test_data[:1:8]
????return?training_datatest_data
if?__name__?==?“__main__“:
????#定義神經(jīng)網(wǎng)絡(luò)的參數(shù)
????learning_rate?=?0.009??#學(xué)習(xí)率
????training_step?=?7000?#訓(xùn)練迭代次數(shù)
????testing_step?=?6000?#測試迭代次數(shù)
????display_step?=?1000?#每多少次迭代顯示一次損失
????#定義輸入和輸出
????x?=?tf.placeholder(tf.float32shape=(None8)name=“X_train“)
????y?=?tf.placeholder(tf.float32shape=(None1)name=“Y_train“)
????#定義模型參數(shù)
????w?=?tf.Variable(tf.random_normal([81]stddev=1.0seed=1))
????b?=?tf.Variable(tf.random_normal([1]stddev=1.0seed=1))
????#定義神經(jīng)網(wǎng)絡(luò)的前向傳播過程
????#Model?=?tf.nn.sigmoid(tf.matmul(xw)?+?b)
????Model?=?tf.nn.tanh(tf.matmul(xw)?+?b)
????#Model?=?tf.nn.relu(tf.matmul(xw)?+?b)
????“““
????對模型進行優(yōu)化,將Model的值加0.5之后進行取整,
????方便測試準確率(若Model>0.5則優(yōu)化后會取整為1,反之會取整為0)
????“““
????model?=?Model?+?0.5
????model?=?tf.cast(modeltf.int32)
????y_?=?tf.cast(ytf.int32)
????#Dropout操作:用于防止模型過擬合
????keep_prob?=?tf.placeholder(tf.float32)
????Model_drop?=?tf.nn.dropout(Modelkeep_prob)
????#損失函數(shù):交叉熵
????cross_entropy?=?-tf.reduce_mean(y?*?tf.log(tf.clip_by_value(Model1e-101.0))+(1-y)?*?tf.log(tf.clip_by_value(1-Model1e-101.0)))
????“““
????優(yōu)化函數(shù)
????即反向傳播過程
????主要測試了Adam算法和梯度下降算法,Adam的效果較好
????“““
????#優(yōu)化器:使用Adadelta算法作為優(yōu)化函數(shù),來保證預(yù)測值與實際值之間交叉熵最小
????#optimizer?=?tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)
????#優(yōu)化器:梯度下降
????optimizer?=?tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
????#加載數(shù)據(jù)and數(shù)據(jù)預(yù)處理
????#加載
????training_datatest_data?=?load_data()
????#訓(xùn)練集
????X_train?=?training_data[::8]
????Y_train?=?training_data[:8:9]
????#測試集
????X_test?=?test_data[::8]
????Y_test?=?test_data[:8:9]
????#X_test_Mn?=?StandardScaler().fit_transform(X_test)
????b?=?MinMaxScaler()
????X_test_cen?=?b.fit_transform(X_test)
????#1、標準化
????#X_train_Mn?=?StandardScaler().fit_transform(X_train)
????#2、正則化?norm為正則化方法:‘l1‘‘l2‘
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-11-24?14:55??基于tensorflow的二分類\
?????文件???????14268??2018-10-22?22:01??基于tensorflow的二分類\diabetes_data.txt
?????文件????????9507??2018-10-23?22:00??基于tensorflow的二分類\diabetes_test.txt
?????文件????????6861??2018-11-12?09:30??基于tensorflow的二分類\tf01.py
?????文件????????1452??2018-11-08?20:15??基于tensorflow的二分類\調(diào)參過程.txt
- 上一篇:python多目標優(yōu)化求解
- 下一篇:Python手機短信轟炸.py
評論
共有 條評論