Python function_base.py pycharm ValueError:对于所需数组深度太小的对象

Python function_base.py pycharm ValueError:对于所需数组深度太小的对象,python,pycharm,Python,Pycharm,**错误:值错误:对于所需数组,对象深度太小 主脚本: import numpy as np from matplotlib import pyplot as plt import pandas as pd import seaborn as sns import yfinance as yf from sklearn import linear_model from sklearn.naive_bayes import GaussianNB from sklearn.svm import SV

**错误:值错误:对于所需数组,对象深度太小

主脚本:

import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
import yfinance as yf
from sklearn import linear_model
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.neural_network import MLPClassifier
import datetime
import backtrader as bt
from backtrader.feeds import PandasData
import backtrader.analyzers as btanalyzers

plt.style.use('seaborn-colorblind')

ticker = 'TSLA'
start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2030, 12, 28)
stock = yf.download(ticker, progress=True, actions=True, start=start, end=end)

stock = stock['Adj Close']
stock = pd.DataFrame(stock)

stock.head()

stock.rename(columns = {"Adj Close": ticker}, inplace=True)

stock['returns'] = np.log(stock/stock.shift(1))
stock.dropna(inplace=True)

stock['direction'] = np.sign(stock['returns']).astype(int)

stock.head(10)

fig, ax = plt.subplots(2, 1, sharex=True, figsize=(12, 6))
ax[0].plot(stock[ticker], label = f'{ticker} Adj Close')
ax[0].set(title=f'{ticker} Closing Price', ylabel='Price')
ax[0].grid(True)
ax[0].legend()
ax[1].plot(stock['returns'], label = 'Daily Returns')
ax[1].set(title=f'{ticker} Daily Returns', ylabel='Returns')
ax[1].grid(True)
ax[1].legend()

lags= [1,2,3,4,5]
cols = []
for lag in lags:
    col = f'rtn_lag{lag}'
    stock[col] = stock['returns'].shift(lag)
    cols.append(col)
stock.dropna(inplace=True)
stock.head(2)

def create_bins(data, bins=[0]):
    global col_bin
    cols_bin = []
    for col in cols:
            col_bin = col+'_bin'
        data[col_bin] = np.digitize(data[col], bins=bin)
    cols_bin.append(col_bin)
create_bins(stock)

stock.head()
print(stock)
plt.show()
导致错误的脚本(function_base.py):

import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
import yfinance as yf
from sklearn import linear_model
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.neural_network import MLPClassifier
import datetime
import backtrader as bt
from backtrader.feeds import PandasData
import backtrader.analyzers as btanalyzers

plt.style.use('seaborn-colorblind')

ticker = 'TSLA'
start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2030, 12, 28)
stock = yf.download(ticker, progress=True, actions=True, start=start, end=end)

stock = stock['Adj Close']
stock = pd.DataFrame(stock)

stock.head()

stock.rename(columns = {"Adj Close": ticker}, inplace=True)

stock['returns'] = np.log(stock/stock.shift(1))
stock.dropna(inplace=True)

stock['direction'] = np.sign(stock['returns']).astype(int)

stock.head(10)

fig, ax = plt.subplots(2, 1, sharex=True, figsize=(12, 6))
ax[0].plot(stock[ticker], label = f'{ticker} Adj Close')
ax[0].set(title=f'{ticker} Closing Price', ylabel='Price')
ax[0].grid(True)
ax[0].legend()
ax[1].plot(stock['returns'], label = 'Daily Returns')
ax[1].set(title=f'{ticker} Daily Returns', ylabel='Returns')
ax[1].grid(True)
ax[1].legend()

lags= [1,2,3,4,5]
cols = []
for lag in lags:
    col = f'rtn_lag{lag}'
    stock[col] = stock['returns'].shift(lag)
    cols.append(col)
stock.dropna(inplace=True)
stock.head(2)

def create_bins(data, bins=[0]):
    global col_bin
    cols_bin = []
    for col in cols:
            col_bin = col+'_bin'
        data[col_bin] = np.digitize(data[col], bins=bin)
    cols_bin.append(col_bin)
create_bins(stock)

stock.head()
print(stock)
plt.show()
(注意:脚本的缩进长度太长了,所以我将只显示出错的行;脚本附带pycharm,所以它应该运行正常,但它没有!)


mono=\u单调性(bins)

函数\u base.py的完整代码如下:函数\u base.py的完整代码如下: