Я хочу построить график компонентов pca в соответствии со следующим кодом в pycharm.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model, decomposition, datasets
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
logistic = linear_model.LogisticRegression()
pca = decomposition.PCA()
pipe = Pipeline(steps = [('pca',pca), ('logistic', logistic)])
digits = datasets.load_digits()
x_digits = digits.data
y_digits = digits.target
# plot pca spectrum
pca.fit(x_digits)
plt.figure(1, figsize=(4,3))
# clear the current figure
plt.clf()
# add axes
plt.axes([.2,.2,.7,.7])
plt.plot(pca.explained_variance_, linewidth = 2)
plt.xlabel('n_components')
plt.ylabel('explained_variance_')
# prediction
n_comp = [20, 40, 64]
# logspace default is base 10, this is 10^-4 to 10^4
cs = np.logspace(-4, 4, 3)
# parameters of pipelines can be set using '__' separated parameter names:
estimator = GridSearchCV(pipe,
dict(pca__n_components = n_comp,
logistic__C = cs))
estimator.fit(x_digits, y_digits)
plt.axvline(estimator.best_estimator_.named_steps['pca'].n_components,
linestyle = ':',label = 'n_compoenents chosen')
plt.legend(prop = dict(size = 12))
plt.axis('tight')
plt.show()
Однако я получил сообщение об ошибке:
UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect.warnings.warn("This figure includes Axes that are not "
и
File "C:\Program Files\JetBrains\PyCharm 2018.1.1\helpers\pycharm_matplotlib_backend\backend_interagg.py", line 25, in __call__
manager.show(**kwargs)
File "C:\Program Files\JetBrains\PyCharm 2018.1.1\helpers\pycharm_matplotlib_backend\backend_interagg.py", line 107, in show
self.canvas.show()
File "C:\Program Files\JetBrains\PyCharm 2018.1.1\helpers\pycharm_matplotlib_backend\backend_interagg.py", line 62, in show
self.figure.tight_layout()
File "C:\Users\User\Anaconda3\lib\site-packages\matplotlib\figure.py", line 1752, in tight_layout
rect=rect)
File "C:\Users\User\Anaconda3\lib\site-packages\matplotlib\tight_layout.py", line 322, in get_tight_layout_figure
max_nrows = max(nrows_list)
ValueError: max() arg is an empty sequence
И я попробовал тот же код в Spyder, он удивил, чтобы работать.
Что не так с настройкой сюжета пихарма? Оба из spyder и pycharm с питоном 3.5.