Операции с матрицей NumPy дают разные результаты на разных машинах

#python #numpy

#python #numpy

Вопрос:

Я пытаюсь выполнить некоторую линейную регрессию, используя NumPy, но я столкнулся со странной проблемой, из-за которой, когда я запускаю один и тот же код на двух разных машинах, я получаю совершенно разные результаты от моих матричных вычислений. Я перепробовал все разные способы, которыми вы можете предварительно выполнить матричную математику из NumPy, такие как использование @, .T, numpy.matmul и т. Д., Но, похоже, ничего не работает. В чем может быть проблема? Я опубликовал результаты каждой компиляции ниже

 import numpy as np
from numpy.linalg import inv
import math as math

with open("dataset1_inputs.txt") as f:
    x = [float(line.rstrip()) for line in f]
with open("dataset1_outputs.txt") as f:
    y = [float(line.rstrip()) for line in f]
testRange = 100
X = np.zeros((testRange, 30))  ##Initialize design matrix for degree M = 30
t = np.zeros((testRange, 1))

degree = 1
for i in range(0, testRange):  ##populate first column with 1's
    X[i][0] = 1
    t[i] = y[i]
for i in range(1, 30):
    for j in range(0, testRange):
        X[j][i] = math.pow(x[j], degree)
    degree = degree   1
#Compute w
# w = (X^TX)inverse x X^Tt
w = inv(np.dot(np.transpose(X), X))
temp = np.dot(np.transpose(X), t)
w = np.dot(w, temp)
print(w)
  

Результаты машины 1: (машина Windows x64 с Python 3.8.6):

 [[ 8.69848822e-01]
 [-1.25241384e 00]
 [-1.27786762e 01]
 [ 3.77876441e 01]
 [ 2.00766643e 02]
 [-1.71725266e 02]
 [-3.12058614e 03]
 [-5.10484631e 03]
 [ 2.09732643e 04]
 [ 6.86684712e 04]
 [-6.30478671e 04]
 [-3.80043816e 05]
 [ 4.60883125e 04]
 [ 1.11930829e 06]
 [ 2.32033793e 05]
 [-1.69654123e 06]
 [-6.95034616e 05]
 [ 6.45140686e 05]
 [ 6.30005602e 05]
 [ 1.85819020e 06]
 [ 4.30926381e 05]
 [-2.59695183e 06]
 [-1.57932674e 06]
 [ 1.17398766e 05]
 [ 1.60064544e 06]
 [ 2.14257091e 06]
 [-7.70042255e 05]
 [-1.69876621e 06]
 [ 1.49711718e 05]
 [ 4.26267824e 05]]
  

Результаты машины 2: (windows x64 с Python 3.8.6):

 [[  8.70267528e-01]
 [ -8.50540645e-01]
 [ -1.33384212e 01]
 [  3.15603869e 01]
 [  2.25742957e 02]
 [ -1.29846687e 02]
 [ -3.60286451e 03]
 [ -5.46711670e 03]
 [  2.58659560e 04]
 [  7.25232295e 04]
 [ -9.22289163e 04]
 [ -4.05888148e 05]
 [  1.55542118e 05]
 [  1.22259802e 06]
 [ -3.41017944e 04]
 [ -1.94905014e 06]
 [ -2.78392952e 05]
 [  1.00743043e 06]
 [  2.39739902e 05]
 [  1.63609800e 06]
 [  5.81782559e 05]
 [ -2.76584288e 06]
 [ -1.48929172e 06]
 [  5.82441438e 05]
 [  1.45785456e 06]
 [  1.73243957e 06]
 [ -7.00478273e 05]
 [ -1.52249602e 06]
 [  1.37099436e 05]
 [  3.95314037e 05]]
  

dataset1_inputs.txt:

 0.0085752
0.34858
-0.6483
-0.21968
0.83694
0.92464
0.52015
-0.854
-0.15398
-0.64415
-0.47995
-0.16656
-0.53479
-0.65786
-0.13067
-0.54993
0.89481
-0.24497
-0.28136
0.98232
-0.34818
0.78465
-0.26009
-0.99519
0.52187
-0.14667
-0.73962
0.70399
-0.058926
-0.97402
0.87799
-0.24527
0.73456
0.74573
-0.95667
0.74783
0.74061
-0.78562
0.91848
-0.17064
0.83431
0.07157
-0.50293
0.56379
0.20177
-0.59273
-0.24742
-0.86927
0.97496
0.032662
0.89152
-0.56605
0.37348
-0.067046
-0.48833
0.67367
-0.41738
-0.76787
-0.23494
-0.57449
0.01713
0.040097
0.83803
0.89038
0.90058
-0.0071085
0.15289
0.98023
0.13791
0.22804
-0.69997
-0.38586
0.45232
0.12822
-0.70853
0.10313
0.25046
0.36702
0.34721
-0.41223
-0.71574
0.92669
0.14109
-0.59018
-0.4724
-0.81846
0.35705
0.88296
-0.6936
0.33462
0.5633
0.80241
0.018326
-0.23274
0.50369
-0.093315
0.14083
-0.35314
-0.46316
0.46174
  

dataset1_outputs.txt:

 0.33905
-0.29989
-0.70484
0.76285
-1.4186
-0.5396
-1.4337
0.7501
0.39163
-0.47404
-0.529
0.87484
-0.45084
-0.93182
0.66687
-0.14734
-1.3097
1.0291
0.063185
-0.48641
-0.16521
-1.3541
0.18096
1.2055
-1.0772
0.73739
-0.29269
-1.2806
1.3158
1.161
-1.6811
0.42825
-1.5091
-0.94393
0.16708
-1.1174
-1.3438
0.77061
-0.81767
0.68627
-0.87397
0.82511
-0.6979
-1.0534
0.38524
-0.49804
0.48469
0.157
-0.35299
0.26627
-0.86402
-0.16451
-0.55633
1.2921
-0.97598
-1.3486
-0.29088
0.30692
-0.33029
-0.1693
0.11585
0.81749
-0.99585
-0.84548
-1.2978
1.2541
0.31546
-0.84441
0.8287
0.44782
-0.49917
-0.054979
-1.77
0.61612
-0.32618
1.3236
0.11207
-0.42859
-0.48358
0.031377
-0.43043
-0.8156
0.4605
-0.2622
0.40015
0.47015
-0.39565
-1.4817
0.28494
-0.46142
-1.8329
-1.7186
1.3911
1.0335
-0.87324
0.62458
0.33825
0.04119
-0.5165
-1.3396
  

Комментарии:

1. этот код, которым вы делитесь, имеет некоторые проблемы, он содержит две неопределенные переменные y и x . попробуйте это исправить

2. Привет, извините за это, я только что исправил это