我对这个很简单的问题感到困惑。根据这个玩具数据:
randgen = np.random.RandomState(9)
npoints = 1000
noise = randgen.randn(npoints)
x = np.linspace(0, 1, npoints)
y = 5 + 10*x + noise
用纽比最小二乘法求解:
^{pr2}$给出了一个合理的答案:array([ 9.94406755, 5.05954009])
代表p
。然而,使用scipy的最小二乘法求解得到了完全不同的答案(每次调用函数时都会发生变化):
p, res, rnk, s = scipy.linalg.lstsq(X, y)
p
一个示例解决方案是array([ 1.16328381e+08, -2.26560583e+06])
。我不明白我错过了什么。我在使用scikitlearn的LinearRegression
时遇到了这个问题,它内部使用了scipy的lstsq
。这给了我奇怪的答案。在
编辑:
Numpy版本:1.11.2
Scipy版本:0.18.1
Python:3.5
编辑:
我已经意识到在加载scipy之前加载一个特定的库是导致这个问题的原因。以下加载库的顺序会导致问题:
import numpy as np
from numpy.ma import MaskedArray
from matplotlib import pyplot as plt
from netCDF4 import Dataset
import matplotlib as mpl
from mpl_toolkits.basemap import Basemap
from pyeemd import ceemdan
from scipy.sparse.linalg import svds
from sklearn.utils.extmath import svd_flip
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
from scipy.signal import convolve, boxcar
如果我删除了from pyeemd import ceemdan
行,那么问题就解决了!这引发了以下问题:为什么会发生这种情况?在
目前没有回答
相关问题 更多 >
编程相关推荐