#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. Привет, извините за это, я только что исправил это