給定數據利用神經網路演算法模型進行計算

来源:https://www.cnblogs.com/qiao101/archive/2018/12/07/10082940.html
-Advertisement-
Play Games

給定數據利用神經網路演算法模型進行計算,利用FP、BP演算法,求得模型最優值。 神經網路初步學習使用。 ...


給定數據利用神經網路演算法模型進行計算,利用FP、BP演算法,求得模型最優值。

神經網路初步學習使用。

 1 import numpy as np
 2 import matplotlib.pylab as plt
 3 from numpy import *
 4 from pylab import *
 5 
 6 from sklearn.neural_network import MLPClassifier
 7 
 8 # 中文 負號
 9 mpl.rcParams['font.sans-serif']=['SimHei']
10 matplotlib.rcParams['axes.unicode_minus']=False
11 
12 X1 = [0.697,0.774,0.634,0.608,0.556,0.403,0.481,0.437,0.666,0.243,0.245,0.343,0.639,0.657,0.360,0.593,0.719]
13 X2 = [0.460,0.376,0.264,0.318,0.215,0.237,0.149,0.211,0.091,0.267,0.057,0.099,0.161,0.198,0.370,0.042,0.103]
14 Y = [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]
15 
16 # 數據初始化
17 m = len(X1)
18 X = np.c_[np.ones(m),X1,X2]
19 y = np.c_[Y]
20 
21 # 數據重新洗牌/打亂
22 np.random.seed(3)
23 order=np.random.permutation(m)
24 X=X[order]
25 y=y[order]
26 
27 # 將數據切割 分為訓練集和測試集
28 d = int(m*0.75)
29 train_X,test_X=np.split(X,[d,])
30 train_y,test_y=np.split(y,[d,])
31 
32 # 定義Sigmoid函數g(z)函數
33 def g(z,deriv=False):
34     if deriv == True:
35         return z*(1-z)
36     return 1.0/(1.0+np.exp(-z))
37 
38 # 初始化theta值 定義神經網路網格結構  L1=3,L2=17,L3=1
39 np.random.seed(3)
40 theta1=2*np.random.random((3,17))-1
41 theta2=2*np.random.random((17,1))-1
42 
43 # 初始化代價值
44 J_hietory = np.zeros(15000)
45 
46 # 開始神經網路迭代
47 for i in range(15000):
48     # 前項傳播演算法
49     a1 = train_X
50     z2 = a1.dot(theta1)
51     a2 = g(z2)
52     z3 = a2.dot(theta2)
53     a3 = g(z3)
54     h = a3
55 
56 
57     # 記錄每次代價
58     J_hietory[i] = -1.0/m*(np.dot(train_y.T,np.log(h))+np.dot((1-train_y).T,np.log((1-h))))
59 
60     # 反向傳播演算法
61 
62     # 每層的delta
63     delta_L3 = a3-train_y
64     delta_L2 = delta_L3.dot(theta2.T)*g(a2,True)
65     # 每層的deltatheta
66     deltatheta2 = 1.0/m*np.dot(a2.T,delta_L3)
67     deltatheta1 = 1.0/m*np.dot(a1.T,delta_L2)
68     # 每層的theta更新
69     theta2 -= 0.8*deltatheta2
70     theta1 -= 0.8*deltatheta1
71 
72 plt.plot(J_hietory)
73 plt.show()
74 
75 
76 # 定義準確率函數
77 def testAccuracy(X,y):
78     m = X.shape[0]
79     count = 0
80 
81     for i in range(m):
82         a1 = X[i]
83         z2 = a1.dot(theta1)
84         a2 = g(z2)
85         z3 = a2.dot(theta2)
86         a3 = g(z3)
87         h = a3
88 
89         if bool(np.where(h>=0.5,1,0)) == bool(y[i]):
90             count += 1
91     return count/m
92 
93 # 分別計算訓練集和測試集的準確率
94 print('訓練集的準確率:',testAccuracy(train_X,train_y)*100,'%')
95 print('訓練集的準確率:',testAccuracy(test_X,test_y)*100,'%')

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今日任務 使用JQuery完成頁面定時彈出廣告 定時器: ​ setInterval clearInterval ​ setTimeout clearTimeout 顯示: img.style.display = "block" 隱藏: img.style.display = "none" img ...
  • 今日任務 使用JS完成頁面定時彈出廣告 使用JS完成表單的校驗 使用JS完成表格的隔行換色 使用JS完成覆選框的全選效果 使用JS完成省市的聯動效果 JS控制下拉列表左右選擇 教學導航 1. 掌握JS中的BOM對象 2. 掌握JS中的常用事件 3. 掌握JS中的常用DOM操作 4. 瞭解JS中的內置 ...
  • 今日目標 使用CSS完成網站首頁的優化 使用CSS完成網站註冊頁面的優化 使用JS完成簡單的數據校驗 使用JS完成圖片輪播效果 教學目標: - 瞭解CSS的概念 - 瞭解CSS的引入方式 - 瞭解CSS的基本用法和常用的選擇器 - 瞭解CSS的盒子模型,懸浮和定位 - 瞭解JS的概念 - 掌握JS的 ...
  • **今日任務** 網站信息頁面案例 網站圖片信息頁面案例 網站友情鏈接頁面案例 網站首頁案例 網站註冊頁面案例 網站後臺頁面案例 教學導航 - 瞭解什麼是標記語言 - 瞭解HTML主要特性,主要變化以及發展趨勢 - 瞭解HTML的結構標簽 - 掌握HTML的主要標簽(字體,圖片,列表,鏈接,表單等標 ...
  • 調用 ...
  • 簡單工廠模式,屬於創建型模式,它提供了一種創建對象的最佳方式。在工廠模式中,我們創建對象時不會對客戶端暴露創建邏輯,而是通過一個統一的介面來指向新創建的對象。 介紹 在現實生活中,當我們去 4S 店購車時,我們不用考慮汽車的各個部件是如何生產的,而就可以提走一輛愛車。同樣的,在軟體開發過程中,當我們 ...
  • 為了能在以後的工作學習中少寫 BUG ,我覺得還是有必要認真複習一下所有的設計模式, 為了後續系列博客做技術儲備, 杠精 請出門右拐點擊 關閉 按鈕即可。需要說明一點的是,設計模式與語言無關,所以還請各位萌新不要陷入語言妄想症。 前言 關於什麼是設計模式,這裡簡單描述描述一下: 所謂設計模式,是指軟 ...
  • 前言 Java多線程分類中寫了21篇多線程的文章,21篇文章的內容很多,個人認為,學習,內容越多、越雜的知識,越需要進行深刻的總結,這樣才能記憶深刻,將知識變成自己的。這篇文章主要是對多線程的問題進行總結的,因此羅列了40個多線程的問題。 這些多線程的問題,有些來源於各大網站、有些來源於自己的思考。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...