Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 绘制matplotlib后的Sklearn回归拟合错误_Python_Numpy_Matplotlib_Scikit Learn - Fatal编程技术网

Python 绘制matplotlib后的Sklearn回归拟合错误

Python 绘制matplotlib后的Sklearn回归拟合错误,python,numpy,matplotlib,scikit-learn,Python,Numpy,Matplotlib,Scikit Learn,已解决 问题似乎在于Anaconda安装的软件包和全局安装的pip软件包之间存在冲突(我安装了Python 3.8单机版)。我不是100%知道冲突的确切来源,但是在卸载Python 3.8和Anaconda(然后重新安装Anaconda和我需要的所有软件包)之后,ValueError不再发生。这让我相信,当我用pip安装一个包时,sklearn或它的一个依赖项是用pip全局安装的(意外地全局安装),并且这个包与Anaconda版本冲突,导致ValueError 我用Python创建了一个回归图

已解决

问题似乎在于Anaconda安装的软件包和全局安装的pip软件包之间存在冲突(我安装了Python 3.8单机版)。我不是100%知道冲突的确切来源,但是在卸载Python 3.8和Anaconda(然后重新安装Anaconda和我需要的所有软件包)之后,
ValueError
不再发生。这让我相信,当我用pip安装一个包时,sklearn或它的一个依赖项是用pip全局安装的(意外地全局安装),并且这个包与Anaconda版本冲突,导致
ValueError


我用Python创建了一个回归图,用sklearn拟合数据,然后在JupyterLab中用matplotlib绘制。问题是,每隔运行一次单元格,我就会在internal None的第4个参数中得到一个
ValueError:非法值

因此,如果我第一次运行该单元,所有操作都按预期进行,那么第二次运行它时,它将给出该错误(最后出现完整错误,代码如下)。请注意,只有当数据(x数组和y数组)的长度为9或更长时(无论单元格运行多少次,长度为8或更短都不会导致任何错误),才会发生这种情况(至少在我这边)

理想情况下,我希望通过在我的代码中添加一些东西或者如果我需要更新/降级一个包来修复他的问题。下面我按以下顺序列出了我的代码单元、错误消息、软件包版本(与anaconda一起安装)以及我尝试过但不起作用的解决方案

注意:ValueError仅在每隔一次运行时发生(因此第一次运行正常),如果我重新运行单元格或运行另一个基本相同但输入不同的单元格(x和y),ValueError将立即发生

(一)

  • 在另一个stackoverflow上,有一条评论提到可能会出现坏的
    scipy
    install,我尝试使用conda强制重新安装,但没有效果


    另一个(在同一页上)提到了
    plt.show()
    ,但是从代码单元格中包含或排除它对错误的发生没有影响。

    我有完全相同的经验(使用PyCharm和no Anaconda)-再次运行有问题的行,它会工作


    LinalError回溯(最近一次调用上次) 在里面 ---->1 lm.装配(X_系列、y_系列)

    ~\pycharmprojects\jupyternotebooks\venv\lib\site packages\sklearn\linear\u model\u base.py适合(自身、X、y、样本重量) 545其他: 546 self.coef_,self.residence,self.rank,self.singular _=
    -->547 linalg.lstsq(X,y) 548 self.coef=self.coef.T 549

    lstsq中的~\pycharmprojects\jupyternotebooks\venv\lib\site packages\scipy\linalg\basic.py(a、b、cond、overwrite\u a、overwrite\u b、check\u finite、lapack\u驱动程序) 1219秒,假,假) 1220如果信息>0: ->1221上升直线误差(“SVD未在线性最小二乘中收敛”) 1222如果信息<0: 1223 raise VALUERROR('内部%s的第%d个参数中的值非法'


    LinalError:SVD没有在线性最小二乘法中收敛

    我有完全相同的经验(使用PyCharm和no Anaconda)-再次运行有问题的行,它会工作


    LinalError回溯(最近一次调用上次) 在里面 ---->1 lm.装配(X_系列、y_系列)

    ~\pycharmprojects\jupyternotebooks\venv\lib\site packages\sklearn\linear\u model\u base.py适合(自身、X、y、样本重量) 545其他: 546 self.coef_,self.residence,self.rank,self.singular _=
    -->547 linalg.lstsq(X,y) 548 self.coef=self.coef.T 549

    lstsq中的~\pycharmprojects\jupyternotebooks\venv\lib\site packages\scipy\linalg\basic.py(a、b、cond、overwrite\u a、overwrite\u b、check\u finite、lapack\u驱动程序) 1219秒,假,假) 1220如果信息>0: ->1221上升直线误差(“SVD未在线性最小二乘中收敛”) 1222如果信息<0: 1223 raise VALUERROR('内部%s的第%d个参数中的值非法'


    LinalError:SVD没有以线性最小二乘法收敛

    无法再现错误..您的软件包是同一版本吗?您是使用anaconda安装的吗?我将尝试创建一个新的anaconda虚拟环境,只安装基本功能(Jupyter Lab、numpy、matplotlib、scipy、scikit learn等)看看我安装的其他软件包是否有问题,这些软件包破坏了scikit learn或我在代码中使用的其他软件包的安装。如果是版本问题,你可以简单地更新你的软件包。我无法重现你的错误,这意味着代码没有问题。尝试重新安装:)结果不是版本问题,相反,我认为这是我的Python3.8安装和Anaconda安装之间的冲突,在这两个安装中,我安装了一个带有pip的包(但它没有使用Anaconda的虚拟环境的pip,而是使用了Python3.8安装全局pip)我想发生的事情是,我有两个不同版本的sklearn或它的一个依赖项,这导致了这个问题。无法重现错误。您的包是相同的版本吗?你是用anaconda安装的吗?我将尝试创建一个新的anaconda虚拟环境,只安装基础(Jupyter Lab、numpy、matplotlib、scipy、scikit learn等),看看我安装的其他软件包是否有问题,这些软件包破坏了scikit learn的安装或我在代码中使用的其他软件包之一。如果是版本问题,你可以简单地更新你的软件包。我无法重现您的错误,这意味着代码正常。尝试重新安装:)结果表明这不是版本问题,而是冲突
    import matplotlib.pyplot as plt
    import numpy as np
    
    from sklearn.linear_model import LinearRegression
    
    data_length = 9  # ValueErrors occur at 9 or greater (8 or less doesn't produce any errors)
    
    x = np.random.rand(data_length)
    x_train = x[:, np.newaxis]
    
    y = np.random.rand(data_length)
    
    model = LinearRegression().fit(x_train, y)
    
    plt.figure(figsize=(8, 6))
    plt.title('Example Regression that Produces a ValueError Every Other Run')
    
    plt.yticks(fontsize=14)
    plt.xticks(fontsize=14)
    
    plt.xlabel('M03A 28% SVR Activity (%)', fontsize=14)
    plt.ylabel('Reference Activity (%)', fontsize=14)
    
    ax = plt.gca()
    
    color=next(ax._get_lines.prop_cycler)['color']
    
    plt.plot(x, model.predict(x[:, np.newaxis]), label='Line of Best Fit', color=color)
    
    plt.text(
        .05,
        .5,
        'y = {}x {} {}\n$R^2$ = {}'.format(
            round(model.coef_[0], 2), '-' if model.intercept_ < 0 else '+', abs(round(model.intercept_, 2)), round(model.score(x_train, y), 2)),
        bbox=dict(facecolor='white', edgecolor=color),
        color=color,
        transform=ax.transAxes,
    )
    
    color=next(ax._get_lines.prop_cycler)['color']
    
    plt.plot(x, y, 'o', color=color, label='Data')
    
    plt.xlim(0, np.max(x)*1.1)
    plt.ylim(0, np.max(y)*1.1)
    
    plt.legend()
    plt.show()  # removing this makes no difference
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-40-c3d4bd1a69a4> in <module>
          6 y = np.random.rand(data_length)
          7 
    ----> 8 model = LinearRegression().fit(x_train, y)
          9 
         10 plt.figure(figsize=(8, 6))
    
    ~\Anaconda3\lib\site-packages\sklearn\linear_model\_base.py in fit(self, X, y, sample_weight)
        545         else:
        546             self.coef_, self._residues, self.rank_, self.singular_ = \
    --> 547                 linalg.lstsq(X, y)
        548             self.coef_ = self.coef_.T
        549 
    
    ~\AppData\Roaming\Python\Python38\site-packages\scipy\linalg\basic.py in lstsq(a, b, cond, overwrite_a, overwrite_b, check_finite, lapack_driver)
       1223             raise LinAlgError("SVD did not converge in Linear Least Squares")
       1224         if info < 0:
    -> 1225             raise ValueError('illegal value in %d-th argument of internal %s'
       1226                              % (-info, lapack_driver))
       1227         resids = np.asarray([], dtype=x.dtype)
    
    ValueError: illegal value in 4-th argument of internal None
    ​```
    
    matplotlib -> 3.3.1
    numpy -> 1.19.1
    scikit-learn -> 0.23.2
    scipy -> 1.5.0