這是計算權重的代碼。我想將權重限制在一個范圍內,例如 (-1, 1) 怎么做?寫一個類?
def coefficients_sgd(train, l_rate, n_epoch):
coef = [0.0 for i in range(len(train[0]))]
for epoch in range(n_epoch):
sum_error = 0
for row in train:
yhat = predict(row, coef)
error = yhat - row[-1]
sum_error = error**2
coef[0] = coef[0] - l_rate * error
for i in range(len(row)-1):
coef[i 1] = coef[i 1] - l_rate * error * row[i]
print('>epoch=%d, lrate=%.3f, error=%.3f' % (epoch, l_rate, sum_error))
return coef
uj5u.com熱心網友回復:
這可以看作是將數字 x 映射到區間 (1,-1) 的問題。有很多功能可以做到這一點。
f(x) -> [-1, 1]
也許使用以原點為中心的縮放 sigmoid 曲線: f(x) = 2*sigmoid(x) -1
import math
def sigmoid(x):
return 1 / (1 math.exp(-x))
def normalise(x):
return 2*sigmoid(x)-1
uj5u.com熱心網友回復:
您可以通過執行以下操作來執行簡單的最小-最大歸一化:
import numpy as np
coef = np.array(coef)
coef = (coef - min(coef)) / (max(coef) - min(coef))
這將確保里面的所有元素coef都在區間內(0, 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365121.html
