【问题标题】:Unable to plot pairplot using Seaborn==0.9.0无法使用 Seaborn==0.9.0 绘制对图
【发布时间】:2019-08-28 09:35:02
【问题描述】:

以下是我在使用 pycharm 时的 pip 列表: 它不适用于 pycharm

我只使用了 1 个命令:pip install seaborn,它安装了以下所有库:

appnope==0.1.0
attrs==19.1.0
backcall==0.1.0
bleach==3.1.0
cycler==0.10.0
decorator==4.4.0
defusedxml==0.5.0
entrypoints==0.3
ipykernel==5.1.0
ipython==7.4.0
ipython-genutils==0.2.0
ipywidgets==7.4.2
jedi==0.13.3
Jinja2==2.10.1
jsonschema==3.0.1
jupyter==1.0.0
jupyter-client==5.2.4
jupyter-console==6.0.0
jupyter-core==4.4.0
kiwisolver==1.0.1
MarkupSafe==1.1.1
matplotlib==3.0.3
mistune==0.8.4
nbconvert==5.4.1
nbformat==4.4.0
notebook==5.7.8
numpy==1.16.2
pandas==0.24.2
pandocfilters==1.4.2
parso==0.4.0
pexpect==4.6.0
pickleshare==0.7.5
prometheus-client==0.6.0
prompt-toolkit==2.0.9
ptyprocess==0.6.0
Pygments==2.3.1
pyparsing==2.3.1
pyrsistent==0.14.11
python-dateutil==2.8.0
pytz==2018.9
pyzmq==18.0.1
qtconsole==4.4.3
scipy==1.2.1
seaborn==0.9.0
Send2Trash==1.5.0
six==1.12.0
terminado==0.8.2
testpath==0.4.2
tornado==6.0.2
traitlets==4.3.2
wcwidth==0.1.7
webencodings==0.5.1
widgetsnbextension==3.4.2

requirements.txt

jupyter==1.0.0
seaborn==0.9.0
plotly==3.6.1

当我尝试将其绘制为 Pairplot

时,它给了我一个错误

代码:

df= pd.read_csv('https://gist.github.com/ktisha/c21e73a1bd1700294ef790c56c8aec1f')    
df.rename(columns={'Class variable (0 or 1)':'Target'}, inplace=True)
sns.pairplot(df,hue='Target')

错误:

LinAlgError: singular matrix

相同的代码适用于 google collab 和 anaconda 基础环境,但不适用于任何其他虚拟环境。 此外,如果我安装 seaborn=0.7.1

,代码也可以工作

为什么会这样? 请有人帮我解决这个问题!

谢谢。

conda list -e > requirements.txt 给了我这个:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-64
appnope=0.1.0=py37_0
asn1crypto=0.24.0=py37_0
attrs=19.1.0=py37_1
backcall=0.1.0=py37_0
blas=1.0=mkl
bleach=3.1.0=py37_0
ca-certificates=2019.1.23=0
certifi=2019.3.9=py37_0
cffi=1.12.2=py37hb5b8e2f_1
chardet=3.0.4=py37_1
cryptography=2.6.1=py37ha12b0ac_0
cycler=0.10.0=py37_0
dbus=1.13.6=h90a0687_0
decorator=4.4.0=py37_1
defusedxml=0.5.0=py37_1
entrypoints=0.3=py37_0
expat=2.2.6=h0a44026_0
freetype=2.9.1=hb4e5f40_0
gettext=0.19.8.1=h15daf44_3
glib=2.56.2=hd9629dc_0
icu=58.2=h4b95b61_1
idna=2.8=py37_0
intel-openmp=2019.3=199
ipykernel=5.1.0=py37h39e3cac_0
ipython=7.4.0=py37h39e3cac_0
ipython_genutils=0.2.0=py37_0
ipywidgets=7.4.2=py37_0
jedi=0.13.3=py37_0
jinja2=2.10=py37_0
jpeg=9b=he5867d9_2
jsonschema=3.0.1=py37_0
jupyter=1.0.0=py37_7
jupyter_client=5.2.4=py37_0
jupyter_console=6.0.0=py37_0
jupyter_core=4.4.0=py37_0
kiwisolver=1.0.1=py37h0a44026_0
libcxx=4.0.1=hcfea43d_1
libcxxabi=4.0.1=hcfea43d_1
libedit=3.1.20181209=hb402a30_0
libffi=3.2.1=h475c297_4
libgfortran=3.0.1=h93005f0_2
libiconv=1.15=hdd342a3_7
libpng=1.6.36=ha441bb4_0
libsodium=1.0.16=h3efe00b_0
markupsafe=1.1.1=py37h1de35cc_0
matplotlib=3.0.3=py37h54f8f79_0
mistune=0.8.4=py37h1de35cc_0
mkl=2019.3=199
mkl_fft=1.0.10=py37h5e564d8_0
mkl_random=1.0.2=py37h27c97d8_0
nbconvert=5.4.1=py37_3
nbformat=4.4.0=py37_0
ncurses=6.1=h0a44026_1
notebook=5.7.8=py37_0
numpy=1.16.2=py37hacdab7b_0
numpy-base=1.16.2=py37h6575580_0
openssl=1.1.1b=h1de35cc_1
pandas=0.24.2=py37h0a44026_0
pandoc=2.2.3.2=0
pandocfilters=1.4.2=py37_1
parso=0.3.4=py37_0
patsy=0.5.1=py37_0
pcre=8.43=h0a44026_0
pexpect=4.6.0=py37_0
pickleshare=0.7.5=py37_0
pip=19.0.3=py37_0
plotly=3.7.0=py_0
prometheus_client=0.6.0=py37_0
prompt_toolkit=2.0.9=py37_0
ptyprocess=0.6.0=py37_0
pycparser=2.19=py37_0
pygments=2.3.1=py37_0
pyopenssl=19.0.0=py37_0
pyparsing=2.3.1=py37_0
pyqt=5.9.2=py37h655552a_2
pyrsistent=0.14.11=py37h1de35cc_0
pysocks=1.6.8=py37_0
python=3.7.3=h359304d_0
python-dateutil=2.8.0=py37_0
pytz=2018.9=py37_0
pyzmq=18.0.0=py37h0a44026_0
qt=5.9.7=h468cd18_1
qtconsole=4.4.3=py37_0
readline=7.0=h1de35cc_5
requests=2.21.0=py37_0
retrying=1.3.3=py37_2
scipy=1.2.1=py37h1410ff5_0
seaborn=0.9.0=py37_0
send2trash=1.5.0=py37_0
setuptools=40.8.0=py37_0
sip=4.19.8=py37h0a44026_0
six=1.12.0=py37_0
sqlite=3.27.2=ha441bb4_0
statsmodels=0.9.0=py37h1d22016_0
terminado=0.8.1=py37_1
testpath=0.4.2=py37_0
tk=8.6.8=ha441bb4_0
tornado=6.0.2=py37h1de35cc_0
traitlets=4.3.2=py37_0
urllib3=1.24.1=py37_0
wcwidth=0.1.7=py37_0
webencodings=0.5.1=py37_1
wheel=0.33.1=py37_0
widgetsnbextension=3.4.2=py37_0
xz=5.2.4=h1de35cc_4
zeromq=4.3.1=h0a44026_3
zlib=1.2.11=h1de35cc_3

但是pip freeze > requirements.txt:

appnope==0.1.0
asn1crypto==0.24.0
attrs==19.1.0
backcall==0.1.0
bleach==3.1.0
certifi==2019.3.9
cffi==1.12.2
chardet==3.0.4
cryptography==2.6.1
cycler==0.10.0
decorator==4.4.0
defusedxml==0.5.0
entrypoints==0.3
idna==2.8
ipykernel==5.1.0
ipython==7.4.0
ipython-genutils==0.2.0
ipywidgets==7.4.2
jedi==0.13.3
Jinja2==2.10
jsonschema==3.0.1
jupyter==1.0.0
jupyter-client==5.2.4
jupyter-console==6.0.0
jupyter-core==4.4.0
kiwisolver==1.0.1
MarkupSafe==1.1.1
matplotlib==3.0.3
mistune==0.8.4
mkl-fft==1.0.10
mkl-random==1.0.2
nbconvert==5.4.1
nbformat==4.4.0
notebook==5.7.8
numpy==1.16.2
pandas==0.24.2
pandocfilters==1.4.2
parso==0.3.4
patsy==0.5.1
pexpect==4.6.0
pickleshare==0.7.5
plotly==3.7.0
prometheus-client==0.6.0
prompt-toolkit==2.0.9
ptyprocess==0.6.0
pycparser==2.19
Pygments==2.3.1
pyOpenSSL==19.0.0
pyparsing==2.3.1
pyrsistent==0.14.11
PySocks==1.6.8
python-dateutil==2.8.0
pytz==2018.9
pyzmq==18.0.0
qtconsole==4.4.3
requests==2.21.0
retrying==1.3.3
scipy==1.2.1
seaborn==0.9.0
Send2Trash==1.5.0
six==1.12.0
statsmodels==0.9.0
terminado==0.8.1
testpath==0.4.2
tornado==6.0.2
traitlets==4.3.2
urllib3==1.24.1
wcwidth==0.1.7
webencodings==0.5.1
widgetsnbextension==3.4.2

【问题讨论】:

  • 您拥有的一个代码行与文档相同,因此应该可以工作。如果您遇到代码问题,您需要提供minimal reproducible example
  • @ImportanceOfBeingErnest 更新了代码!。我正在使用皮马印第安人数据集。请检查并告诉我谢谢!

标签: python pandas scikit-learn seaborn


【解决方案1】:

我无法重现该错误。但是有一个不同的,这是由于链接无法正常工作。以下对我来说是正确的。

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

n = "https://gist.githubusercontent.com/ktisha/c21e73a1bd1700294ef790c56c8aec1f/raw/819b69b5736821ccee93d05b51de0510bea00294/pima-indians-diabetes.csv"
df= pd.read_csv(n, comment='#', header=None, sep=",")    
df.columns=list("ABCDEFGHI")

print(df.head())
sns.pairplot(df, hue='I', vars=df.columns[:-1])
plt.show()

【讨论】:

  • 如果使用只有 3 个库的 pip3 install -r requirements.txt。它给出了一个错误,但如果我使用 conda 安装它就可以了!为什么??
  • 对不起,我不知道你在“requirements.txt”中有什么,所以我无法回答这个问题。但总的来说,这个解决方案假设你已经正确安装了 matplotlib、pandas 和 seaborn。
  • 我已经添加了 requirements.txt。请检查 !此外,它会在 conda 中给出警告 在 true_divide 中遇到的无效值,它仍然有效。但是,如果我使用 pip install -r requirements.txt,它不会起作用。我错过了什么??
  • 那么您在使用该 requirements.txt 时遇到的错误是 LinAlgError 还是其他错误?
  • 不知何故,您的环境似乎有一些不兼容的版本。如果你能让这个可重现,你可能有机会找到答案。
【解决方案2】:

使用 PairGrid 代替 fairplot g = sns.PairGrid(df , hue = 'TARGET CLASS') g = g.map(sns.scatterplot)

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 2016-05-12
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多