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代碼理解機器學習原理

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

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

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/218270.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 00:30
下一篇 2024-12-09 00:30

相關推薦

發表回復

登錄後才能評論