tf.keras實現線性迴歸和多層感知器

有何m不可發表於2024-05-31

線性迴歸實現

轉自:https://www.cnblogs.com/miraclepbc/p/14287756.html

相關庫引用

import tensorflow as tf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

載入資料

data = pd.read_csv("E:/datasets/dataset/Income1.csv") # 獲取資料
x = data.Education
y = data.Income
data

tf.keras實現線性迴歸和多層感知器

輸出散點圖,看看資料的分佈情況

plt.scatter(data.Education, data.Income) # 列印散點圖

tf.keras實現線性迴歸和多層感知器

定義模型

model = tf.keras.Sequential() # 建立一個層疊模型
model.add(tf.keras.layers.Dense(1, input_shape = (1, ))) # 新增一個層,1個單元,輸入大小用元組
model.summary() # 檢視模型的引數資訊

tf.keras實現線性迴歸和多層感知器
這裡總共有2個引數,即 y=ax+b𝑦=𝑎𝑥+𝑏的a𝑎和b𝑏
tf.keras.layers.Dense()引數列表中還有啟用函式,這個後面介紹

模型編譯

model.compile(
    optimizer = 'adam', # adam最佳化器
    loss = 'mse'        # 均方根誤差
)

訓練模型

history = model.fit(x, y, epochs = 10000) # 訓練10000次

tf.keras實現線性迴歸和多層感知器

預測

model.predict(pd.Series([20]))

tf.keras實現線性迴歸和多層感知器

多層感知器實現

載入資料

data = pd.read_csv("E:/datasets/dataset/Advertising.csv") # 獲取資料
x = data.iloc[:, 1:-1]
y = data.iloc[:, -1]
data

tf.keras實現線性迴歸和多層感知器

輸出散點圖,看看資料的分佈情況

plt.scatter(data.TV, data.sales) # 列印散點圖

tf.keras實現線性迴歸和多層感知器

定義模型

model = tf.keras.Sequential() # 建立一個層疊模型
model.add(tf.keras.layers.Dense(10, input_shape = (3, ), activation = 'relu')) # 新增一個層,10個節點
model.add(tf.keras.layers.Dense(1))
model.summary()

tf.keras實現線性迴歸和多層感知器
這裡總共有51個引數,即:
第一層:y=a1x1+a2x2+a3x3+b𝑦=𝑎1∗𝑥1+𝑎2∗𝑥2+𝑎3∗𝑥3+𝑏的a1,a2,a3𝑎1,𝑎2,𝑎3和b𝑏,總共10個節點,因此有40個引數
第二層:y=10i=1wixi+b𝑦=∑𝑖=110𝑤𝑖∗𝑥𝑖+𝑏的wi𝑤𝑖和b𝑏,總共有11個引數

模型編譯

model.compile(
    optimizer = 'adam', # adam最佳化器
    loss = 'mse'        # 均方根誤差
)

訓練模型

history = model.fit(x, y, epochs = 1000) # 訓練1000次

tf.keras實現線性迴歸和多層感知器

預測

test = data.iloc[:10, 1:-1]
model.predict(test)

tf.keras實現線性迴歸和多層感知器

相關文章