【问题标题】:I transformed data inputs and got the weights for my neural network model. How can I inverse the transformed weights to get original values?我转换了数据输入并获得了我的神经网络模型的权重。如何反转转换后的权重以获得原始值?
【发布时间】:2022-07-28 09:18:46
【问题描述】:
from sklearn.preprocessing import StandardScaler

def transpose(m):
    n = len(m[0])
    holder = []
    for i in range(n):
        current = []
        holder.append(current)
        
    for i in range(len(m)):
        for j in range(n):
        
            curr = m[i][j]
        
            holder[j].append(curr)
        
    return holder

data = [[61, 175, 111, 124, 130, 173, 169, 169, 160, 244, 257, 333, 199], 
 [13, 21, 24, 23, 64, 38, 33, 61, 39, 71, 112, 88, 54]]

y = [4, 18, 14, 18, 26, 26, 21, 30, 28, 36, 65, 62, 40]

data = transpose(data)

scalerX = StandardScaler()
scalerX.fit(data)
X = scalerX.transform(data)
X = X.reshape(len(X), 1, 2)

scalerY = StandardScaler()
y = np.array(y)
y = y.reshape(-1, 1)
scalerY.fit(y)
y = scalerY.transform(y)
y = y.reshape(13, 1, 1)

#I wrote my own Dense layer from scratch and called it FCLayer for 'fully connected'

fc = FCLayer(2, 1)  
net = Network()
net.add(fc)
net.use(mse, mse_prime)
net.fit(X, y, epochs=100, learning_rate=0.1)
print(fc.getWeights())

所以本质上,权重代表了我的回归模型的系数向量,但显然权重是缩放的,所以我想知道如何将缩放的权重转换为原来的值。

我只是想比较神经网络与我制作的类似于 sklearn 线性回归模型的线性回归模型的性能。

【问题讨论】:

    标签: scikit-learn data-preprocessing


    【解决方案1】:

    除以比例因子。

    weights = fc.getWeights()
    for idx, weight in weights:
       scaling_factor = scaler.scale_[idx]
       real_weight = weight/scaling_factor
       print (real_weight)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 2021-06-05
      • 2022-07-08
      • 2014-09-14
      • 1970-01-01
      • 2017-11-28
      • 2011-05-23
      • 2020-03-28
      相关资源
      最近更新 更多