最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python純代碼通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)線性回歸的擬合方式

 更新時間:2023年05月31日 10:51:22   作者:Zhao-Jichao  
這篇文章主要介紹了Python純代碼通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)線性回歸的擬合方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

純代碼通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)線性回歸的擬合

參考鏈接中的文章,有錯誤,我給更正了。

并且原文中是需要數(shù)據(jù)集文件的,我直接給替換成了一個數(shù)組,采用直接賦值的方式。

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
class SimpleDataReader(object):
    def __init__(self, data_file):
        self.train_file_name = data_file
        self.num_train = 0
        self.XTrain = None
        self.YTrain = None
    # read data from file
    def ReadData(self):
        # data = np.load(self.train_file_name)
        # self.XTrain = data["data"]
        # self.YTrain = data["label"]
        self.XTrain = np.array([0.95, 3, 4, 5.07, 6.03, 8.21, 8.85, 12.02, 15], dtype=float)
        self.YTrain = np.array([5.1, 8.7, 11.5, 13, 15.3, 18, 21, 26.87, 32.5], dtype=float)
        self.num_train = self.XTrain.shape[0]
        #end if
    # get batch training data
    def GetSingleTrainSample(self, iteration):
        x = self.XTrain[iteration]
        y = self.YTrain[iteration]
        return x, y
    def GetWholeTrainSamples(self):
        return self.XTrain, self.YTrain
class NeuralNet(object):
    def __init__(self, eta):
        self.eta = eta
        self.w = 0
        self.b = 0
    def __forward(self, x):
        z = x * self.w + self.b
        return z
    def __backward(self, x,y,z):
        dz = z - y                  # 原錯誤為:dz = x * (z - y)
        db = dz
        dw = dz
        return dw, db
    def __update(self, dw, db):
        self.w = self.w - self.eta * dw
        self.b = self.b - self.eta * db
    def train(self, dataReader):
        for i in range(dataReader.num_train):
            # get x and y value for one sample
            x,y = dataReader.GetSingleTrainSample(i)
            # get z from x,y
            z = self.__forward(x)
            # calculate gradient of w and b
            dw, db = self.__backward(x, y, z)
            # update w,b
            self.__update(dw, db)
            # end for
    def inference(self, x):
        return self.__forward(x)
if __name__ == '__main__':
    # read data
    sdr = SimpleDataReader('ch04.npz')
    sdr.ReadData()
    # create net
    eta = 0.1
    net = NeuralNet(eta)
    net.train(sdr)
    # result
    print("w=%f,b=%f" %(net.w, net.b))
    # 繪圖部分
    trainX,trainY = sdr.GetWholeTrainSamples()
    fig = plt.figure()
    ax = fig.add_subplot(111)
    # 繪制散點圖
    ax.scatter(trainX,trainY)
    # 繪制線性回歸
    x = np.arange(0, 15, 0.01)
    f = np.vectorize(net.inference, excluded=['x'])
    plt.plot(x,f(x),color='red')
    # 顯示圖表
    plt.show()

在這里插入圖片描述

Ref:

通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)線性回歸的擬合

Python使用線性回歸和神經(jīng)網(wǎng)絡(luò)模型進(jìn)行預(yù)測

公路運量主要包括公路客運量和公路貨運量兩個方面。

根據(jù)研究,某地區(qū)的公路運量主要與該地區(qū)的人數(shù)、機(jī)動車數(shù)量和公路面積有關(guān),表5-11給出了某個地區(qū)20年的公路運量相關(guān)數(shù)據(jù)。

根據(jù)相關(guān)部門數(shù)據(jù),該地區(qū)2010年和2011年的人數(shù)分別為73.39萬和75.55萬,機(jī)動車數(shù)量分別為3.9635萬輛和4.0975萬輛,公路面積分別為0.9880萬平方千米和1.0268萬平方千米。

請利用BP神經(jīng)網(wǎng)絡(luò)預(yù)測該地區(qū)2010年和2011年的公路客運量和公路貨運量。

表5-11 運力數(shù)據(jù)表

年份 人數(shù) 機(jī)動車數(shù)量 公路面積 公里客運量 公里貨運量
1990 20.55 0.6 0.09 5126 1237
1991 22.44 0.75 0.11 6217 1379
1992 25.37 0.85 0.11 7730 1385
1993 27.13 0.9 0.14 9145 1399
1994 29.45 1.05 0.2 10460 1663
1995 30.1 1.35 0.23 11387 1714
1996 30.96 1.45 0.23 12353 1834
1997 34.06 1.6 0.32 15750 4322
1998 36.42 1.7 0.32 18304 8132
1999 38.09 1.85 0.34 19836 8936
2000 39.13 2.15 0.36 21024 11099
2001 39.99 2.2 0.36 19490 11203
2002 41.93 2.25 0.38 20433 10524
2003 44.59 2.35 0.49 22598 11115
2004 47.3 2.5 0.56 25107 13320
2005 52.89 2.6 0.59 33442 16762
2006 55.73 2.7 0.59 36836 18673
2007 56.76 2.85 0.67 40548 20724
2008 59.17 2.95 0.69 42927 20803
2009 60.63 3.1 0.79 43462 21804

注:數(shù)據(jù)取自《Matlab在數(shù)學(xué)建模中的應(yīng)用(第2版)》,卓金武,第134頁。

在這里插入圖片描述

#1.?dāng)?shù)據(jù)獲取
import pandas as pd
data = pd.read_excel('運力數(shù)據(jù)表.xlsx')
x = data.iloc[:20,:4]
y = data.iloc[:20,4:]
#2.導(dǎo)入線性回歸模塊,簡稱為LR
from sklearn.linear_model import LinearRegression as LR
lr = LR()             #創(chuàng)建線性回歸模型類
lr.fit(x,y)         #擬合
slr=lr.score(x,y)   #判定系數(shù) R^2
c_x=lr.coef_         #x對應(yīng)的回歸系數(shù)
c_b=lr.intercept_   #回歸系數(shù)常數(shù)項
#3.預(yù)測
x1 = data.iloc[20:,:4]
r1=lr.predict(x1)    #采用自帶函數(shù)預(yù)測
#print('x回歸系數(shù)為:',c_x)
#print('回歸系數(shù)常數(shù)項為:',c_b)
#print('判定系數(shù)為:',slr)
#print('樣本預(yù)測值為:',r1)
n=list(data["公里客運量(萬人)"])
n.extend(r1[:,0])
num=pd.DataFrame(n).dropna()
g=list(data["公里貨運量(萬噸)"])
g.extend(r1[:,1])
gravity=pd.DataFrame(g).dropna()
import pandas as pd
import matplotlib.pyplot as plt  #導(dǎo)入繪圖庫中的pyplot模塊,并且簡稱為plt
#構(gòu)造繪圖所需的橫軸數(shù)據(jù)列和縱軸數(shù)據(jù)列
#在figure界面上繪制線性圖
plt.rcParams['font.sans-serif'] = 'SimHei'     #設(shè)置字體為SimHei
plt.figure(1)
plt.plot(data["年份"],num,'r*--')  #紅色“*”號連續(xù)圖,
plt.xlabel('日期')
plt.ylabel('公里客運量(萬人')
plt.title('公里客運量(萬人)走勢圖')
plt.xticks(data["年份"],rotation = 45)
plt.savefig('myfigure1')
plt.figure(2)
plt.plot(data["年份"],gravity,'b*--')  #紅色“*”號連續(xù)圖,
plt.xlabel('日期')
plt.ylabel('公里貨運量(萬噸)')
plt.title('公里貨運量(萬噸)走勢圖')
plt.xticks(data["年份"],rotation = 45)
plt.savefig('myfigure2')
from sklearn.neural_network import MLPRegressor 
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=8, random_state=1) 
clf.fit(x, y);   
rv=clf.score(x,y)
r2=clf.predict(x1)   
print('樣本預(yù)測值為:',r2)
n2=list(data["公里客運量(萬人)"])
n2.extend(r2[:,0])
num2=pd.DataFrame(n2).dropna()
g2=list(data["公里貨運量(萬噸)"])
g2.extend(r2[:,1])
gravity2=pd.DataFrame(g2).dropna()

結(jié)果顯示:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中Selenium模塊的使用詳解

    Python中Selenium模塊的使用詳解

    這篇文章主要介紹了Python中Selenium模塊的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python入門教程之運算符重載詳解

    Python入門教程之運算符重載詳解

    運算符重載意味著賦予超出其預(yù)定義的操作含義的擴(kuò)展含義。例如運算符 + 用于添加兩個整數(shù)以及連接兩個字符串和合并兩個列表。本文將通過示例帶大家詳細(xì)了解Python的運算符重載,感興趣的可以了解一下
    2022-09-09
  • Python lxml模塊安裝教程

    Python lxml模塊安裝教程

    這篇文章主要介紹了Python lxml模塊安裝教程,本文分別講解了Windows系統(tǒng)和Linux系統(tǒng)下的安裝教程,需要的朋友可以參考下
    2015-06-06
  • Python的numpy選擇特定行列的方法

    Python的numpy選擇特定行列的方法

    這篇文章主要介紹了Python的numpy選擇特定行列的方法,有時需要抽取矩陣中特定行的特定列,比如,需要抽取矩陣x的0,1行的0,3列,結(jié)果為矩陣域,需要的朋友可以參考下
    2023-08-08
  • Python使用psutil獲取系統(tǒng)信息

    Python使用psutil獲取系統(tǒng)信息

    這篇文章介紹了Python使用psutil獲取系統(tǒng)信息的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • PyQt中實現(xiàn)自定義工具提示ToolTip的方法詳解

    PyQt中實現(xiàn)自定義工具提示ToolTip的方法詳解

    這篇文章主要為大家詳細(xì)介紹了PyQt中實現(xiàn)自定義工具提示ToolTip的方法詳解,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • Python身份運算符is與is?not區(qū)別用法基礎(chǔ)教程

    Python身份運算符is與is?not區(qū)別用法基礎(chǔ)教程

    這篇文章主要為大家介紹了Python身份運算符is與is?not區(qū)別用法基礎(chǔ)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 對Python中GIL(全局解釋器鎖)的一點理解淺析

    對Python中GIL(全局解釋器鎖)的一點理解淺析

    首先需要明確的一點是GIL并不是Python的特性,它是在實現(xiàn)Python解析器(CPython)時所引入的一個概念,下面這篇文章主要給大家介紹了關(guān)于對Python中GIL的一點理解,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法

    Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法

    這篇文章主要介紹了Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法,本文代碼實例圖文相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 基于Python實現(xiàn)復(fù)刻人生重開模擬器

    基于Python實現(xiàn)復(fù)刻人生重開模擬器

    人生重開模擬器是由VickScarlet上傳至GitHub的一款簡單的文字網(wǎng)頁游戲。本文將用Python復(fù)刻一下這個游戲,感興趣的小伙伴可以嘗試一下
    2022-10-10

最新評論

浮山县| 蒙自县| 会理县| 屯留县| 兴海县| 偃师市| 沈阳市| 当雄县| 漯河市| 叶城县| 广昌县| 大同县| 即墨市| 富蕴县| 兰溪市| 江口县| 岢岚县| 萍乡市| 郴州市| 会泽县| 凉城县| 明溪县| 鄂州市| 花莲市| 白山市| 永顺县| 大悟县| 灵川县| 全州县| 昭平县| 嘉鱼县| 东平县| 通榆县| 汶川县| 叙永县| 廉江市| 广昌县| 信丰县| 大洼县| 舟曲县| 东光县|