Keras 簡單線性回歸

2021-10-24 08:47:02 字數 4257 閱讀 2484

整體**

視覺化管理

import numpy as np

import pandas as pd

import tensorflow as tf

import matplotlib.pyplot as plt

from tensorflow.keras.layers import dense

from tensorflow.keras.models import sequential

from sklearn.model_selection import train_test_split

x = np.array([50

,30,15

,40,55

,20,45

,10,60

,25])

y = np.array(

[5.9

,4.6

,2.7

,4.8

,6.5

,3.6

,5.1

,2.0

,6.3

,3.8

])

使用train_test_split劃分資料

test_size:劃分出來的測試集佔總資料集的比例

shuffle:是否在劃分前將資料順序打亂

random_state:shuffle的隨機種子

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=

0.3,shuffle=

true

,random_state=

23)

模型選用sequential

tf.keras.layers.dense進行全連線操作

input_dim向量的維度,如果是第乙個全連線層,需要設定輸入層的大小

units全連線層神經元個數

activation啟用函式,如果不設定,就表示不使用啟用函式

name

model = sequential(

)model.add(dense(input_dim=

1,units=

1,name=

'dense'

))

tf.keras.sequential.compile進行模型設定

loss損失函式

optimizer優化器

model.

compile

(loss=

'mse'

,optimizer=tf.keras.optimizers.sgd(learning_rate=1e-

5))

tf.keras.sequential.fit進行模型設定

batch_size單次更新大小

epochs訓練次數

validation_split驗證集佔訓練集的比例

可以返回乙個history物件,記錄每一輪訓練集和驗證集的損失函式值和評價指標

history = model.fit(x=x_train,y=y_train,batch_size=

2,epochs=

100,validation_split=

0.2)

tf.keras.sequential.evaluate進行模型設定

loss = model.evaluate(x=x_test,y=y_test)
tf.keras.sequential.predict進行模型設定

y_test_pred = model.predict(x=x_test)
import numpy as np

import pandans as pd

import matplotlib as plt

from tensorflow.keras.layers import dense

from tensorflow.keras.models import sequential

from sklearn.model_selection import train_test_split

x = np.array[50,

30,15,

40,55,

20,45,

10,60,

25]y = np.array[

5.9,

4.6,

2.7,

4.8,

6.5,

3.6,

5.1,

2.0,

6.3,

3.8]

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=

0.3,shuffle=

true,random_state=23)

model = sequential(

)model.add(dense(input_dim=

1,units=

1,name=

'dense'))

model.

compile

(loss=

'mse'

,optimizer=tf.keras.optimizers.sgd(learning_rate=1e-

5))history = model.fit(x=x_train,y=y_train,batch_size=

2,epochs=

100,validation_split=

0.2)

loss = model.evaluate(x=x_test,y=y_test)

y_test_pred = model.predict(x=x_test)

#畫散點圖

plt.scatter(x,y)

#顯示網格

plt.grid('')

#給橫座標命名

plt.xlabel(

'area'

)#給縱座標命名

plt.ylabel(

'price'

)#輸出

plt.show(

)

#在設定模型結束後,檢視模型輸出

model.summary(

)

#在訓練模型結束後,檢視loss的變化趨勢

pd.dataframe(history.history)

.plot(

)plt.xlabel(

'epoch'

)plt.show(

)

#在驗證模型結束後,檢視損失值

print

(loss)

#在**模型結束後,檢視**值

print

(y_test_pred)

plt.scatter(x_test,y_test,color=

'g',label=

'test'

)plt.scatter(x_train,y_train,color=

'b',label=

'train'

)plt.plot(x_test,y_test_pred,color=

'r',label=

'predict'

)plt.legend(

)plt.show(

)

#在**模型結束後,檢視**值

model.predict(np.array([35

]))

#在**模型結束後,檢視**值

model.layers[0]

.get_weights(

)

簡單線性回歸

真實值 y theta x varepsilon 值 hat theta x varepsilon 為誤差 項,服從 均值為0 方差為 為誤差項,服從均值為0,方差為 為誤差項,服 從均值為 0,方差 為 sigma 的高斯分布。已知若干樣本,可以得到若干 varepsilon 值,根 據極大似 然...

簡單線性回歸

資料預處理 data student data 1 刪除缺失值 lm data na.omit data 散點圖 plot height,weight,data data,main scatter plot col 1,pch col為顏色,pch為形狀 箱線圖 boxplot height wei...

2 1 簡單線性回歸

使用一種基於自變數 x 來 因變數 y 的方法,假設這兩個變數是線性相關的,因此我們嘗試尋找一種根據特徵或自變數 x 的線性函式來精確 響應值 y import pandas as pd import numpy as np import matplotlib.pyplot as plt datas...