Код: Выделить всё
oserror: 'seaborn-deep' is not a valid package style, path of style file, URL of style file, or library style name (library styles are listed in `style.available`)
Код: Выделить всё
# Importation of libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pypfopt import EfficientFrontier, risk_models, expected_returns, plotting
# ... (data loading and processing)
# Plotting the efficient frontier
ef = EfficientFrontier(mu, S, weight_bounds=(0, 1))
fig, ax = plt.subplots(figsize=(10, 7))
# Generate the efficient frontier
plotting.plot_efficient_frontier(ef, ax=ax, show_assets=False)
# Mark the minimum volatility portfolio
ef.min_volatility()
ret_min_vol, vol_min_vol, _ = ef.portfolio_performance()
ax.scatter(vol_min_vol, ret_min_vol, marker='*', s=200, c='r', label='Minimum Volatility Portfolio')
# Mark the maximum Sharpe ratio portfolio
ef = EfficientFrontier(mu, S)
ef.max_sharpe()
ret_max_sharpe, vol_max_sharpe, _ = ef.portfolio_performance()
ax.scatter(vol_max_sharpe, ret_max_sharpe, marker='*', s=200, c='g', label='Maximum Sharpe Ratio Portfolio')
# Labels and titles
ax.set_title('Efficient Frontier')
ax.set_xlabel('Volatility (Risk)')
ax.set_ylabel('Expected Return')
ax.legend()
plt.show()
Чтобы решить проблему, я попробовал следующее:
Переустановил PyPortfolioOpt с помощью pip install PyPortfolioOpt --upgrade.
Установил более старые версии PyPortfolioOpt, чтобы проверить, сохраняется ли проблема.
Убедился, что seaborn и matplotlib обновлены, запустив pip install seaborn --upgrade и pip install matplotlib --upgrade.
Проверено, что seaborn установлен и его можно без проблем импортировать.
Дополнительная информация:
Я использую Python 3.12.
Мои текущие версии пакетов:
PyPortfolioOpt: 1.5.5
matplotlib: 3.8.0
seaborn: 0.13.0
Вывод plt.style.available не включает 'seaborn-deep'.
Вопросы:
Почему я получаю эту ошибку при импорте графиков из PyPortfolioOpt?
Существует ли проблема совместимости с Python 3.12 или определенными версиями matplotlib или seaborn?
Как исправить эту ошибку, чтобы можно было построить эффективную границу с помощью PyPortfolioOpt?
Буду очень признателен за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/790 ... ot-working