<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • 基于python進行數據分析(python基礎代碼大全)


    【關鍵字】

    1. Pyhton

    2. TensorFlow

    3. 機器學習

    【場景定義】

    假定一些樣本數據和正確結果,而且人為添加一些噪音數據(偏差數據),提供給TensorFlow進行機器學習,看看機器學習效果如何,并通過實驗理解機器學習

    1)樣本數據模型:f(x) = ax^2 + bx + c,即拋物線,當然也可以任意定義一個模型

    2)噪音數據:y=f(x) + 隨機數,隨機數就作為偏差值,產生噪音數據

    3)輸入和輸出:輸入數據x和輸出數據y都是明確的一維數據,是最簡單的模型,取值:x=[0,300],得到的y就是輸出數據

    import tensorflow as tf

    import numpy as np

    import matplotlib.pyplot as plt

    import os

    os.environ[‘TF_CPP_MIN_LOG_LEVEL’] = ‘2’

    #產生樣本數據和圖形

    numdots=300

    inputdata=[]

    for i in range(numdots):

    x=np.random.normal(0.8,10)

    y=0.3*x*x-0.2*x+0.5+np.random.normal(0,6)

    inputdata.append([x,y])

    x_data=[v[0] for v in inputdata]

    y_data=[v[1] for v in inputdata]

    【神經網絡】

    基于Tesonflow構建神經網絡,用到了神經網絡的幾個常用方法:

    1)array.reshape(): 生成矩陣

    2)placeholder:添加計算占位符節點,相當于定義一個參數,需要重點理解清楚

    X = tf.placeholder(dtype=tf.float32, shape=[144, 10], name=’X’)

    參數說明

    dtype:數據類型,必填,默認為value的數據類型,傳入參數為tensorflow下的枚舉值(float32,float64…….)

    shape:數據形狀,選填,不填則隨傳入數據的形狀自行變動,可以在多次調用中傳入不同形狀的數據

    name:常量名,選填,默認值不重復,根據創建順序為(Placeholder,Placeholder_1,Placeholder_2…….)

    3)Variable:變量域,相當于設置一個變量

    4)relu:線性整流函數(Rectified Linear Unit, ReLU),又稱修正線性單元

    5)matmul:將矩陣 a 乘以矩陣 b,生成a * b

    6)reduce_mean :計算張量tensor沿著指定的數軸(tensor的某一維度)上的的平均值,主要用作降維或者計算tensor(圖像)的平均值

    7)GradientDescentOptimizer:實現實現梯度下降算法的優化器類,用于構造一個新的梯度下降優化器實例

    #構建神經網絡模式

    x_data=np.array([x_data]).reshape(-1,1)

    y_data=np.array([y_data]).reshape(-1,1)

    x_h=tf.placeholder(dtype=tf.float64,shape=[None,1],name=”xh”)

    y_h=tf.placeholder(dtype=tf.float64,shape=[None,1],name=”yh”)

    w=tf.Variable(np.random.normal(0,0.3,size=[1,20]),dtype=tf.float64)

    b=tf.Variable(np.random.normal(0.0,0.5,size=[20]),dtype=tf.float64)

    y0=tf.nn.relu(tf.matmul(x_h,w)+b)

    w1=tf.Variable(np.random.normal(0,0.5,size=[20,1]),dtype=tf.float64)

    b1=tf.Variable(np.random.normal(0,0.8,size=[1]),dtype=tf.float64)

    y=(tf.matmul(y0,w1)+b1)

    los=tf.reduce_mean((tf.square(y-y_h)))

    tran=tf.train.GradientDescentOptimizer(0.001).minimize(los)

    【機器訓練】

    訓練主要在session中進行交互,session具有管理CPU/GPU計算能力和網絡連接功能,相當于一個上下文,使用參數是:

    1)Session:Session作為會話,主要功能是指定操作對象的執行環境,Session類構造函數有3個可選參數。

    target(可選):指定連接的執行引擎,多用于分布式場景。

    graph(可選):指定要在Session對象中參與計算的圖(graph)。

    config(可選):輔助配置Session對象所需的參數(限制CPU或GPU使用數目,設置優化參數以及設置日志選項等)。

    2)global_variables_initializer:返回一個用來初始化計算圖中所有global variable的op,通常使用方式是:sess.run(tf.global_variables_initializer()),啟動所需要的數據流圖進行計算。

    3)session.run:執行計算,參數是:run(op, data),比如:

    import tensorflow as tf

    a = tf.add(1, 2)

    # 定義了一個op操作,恒等于1+2 = 3

    b = tf.multiply(a, 2)

    # 定義了相乘操作,a*2

    session = tf.Session()

    v1 = session.run(b)

    print(v1)

    # v1=(1+2) * 2 =6

    replace_dict = {a:20}

    # a重新定義為常量20

    v2 = session.run(b, feed_dict = replace_dict)

    print(v2)

    # V2= 20 *2 = 40

    訓練次數越高,如果模型合理的話,擬合結果會越準確,本文是明確的拋物線模型,所以訓練結果能較好的回歸

    【使用訓練結果】

    訓練結束后,在相同的上下文計算,可以使用訓練結果看看學習效果

    #用神經網絡計算X上的所有點的Y值,繪制圖形,看效果

    testx=np.linspace(-30,30,60,dtype=np.float32).reshape(-1,1)

    testy=sess.run(y,feed_dict={x_h:testx})

    #plt.scatter(testx,testy)

    plt.scatter(x_data,y_data)

    plt.plot(testx,testy)

    plt.show()

    上述代碼可以直接運行,得到結果是:

    基于Python代碼理解機器學習原理

    藍點:帶有噪音的樣本數據

    曲線:訓練結束后,基于訓練結果計算得到的數據,已經非常接近于去除噪音的樣本模型了

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费