Итак, у меня есть код, который в основном должен запускать следующее:
df = pd.read_csv(r'C:\Users\pas\Documents\Main_sheet.csv')
consolidated_volatility=consolidated_stdev(df)
consolidated_fractal_d=consolidated_fd(df)
conservation_coefficients=conservation(consolidated_volatility,consolidated_fractal_d)
print(conservation_coefficients)
, где df, консолидированная волатильность и фракталы работают правильно и выбрасывают соответствующие фреймы данных. Впоследствии коэффициенты сохранения представляют собой регрессию внутри функции, которая должна выполнять итерацию по парам столбцов в обоих консолидированных «x» -фреймах данных, при попытке изолированной работы это работает, но при запуске функции она говорит: ValueError: Ввод содержит NaN, бесконечность или слишком большое значение для dtype ('float64').
Вот функции:
def reg_setup(volatilities, fractals):
x=[]
for i in range(len(volatilities)):
a=[]
a.append(volatilities[i])
a.append(fractals[i])
x.append(a)
return x
from sklearn.linear_model import LinearRegression
#law of conservation
def conservation(volatilities,fractals):
y=np.ones(1225).reshape(-1,1)
volatility_col=list(volatilities.columns)
fd_col=list(fractals.columns)
coeff_set=[]
for item in volatility_col:
coeff_set.append(item[:6])
reg_coeff=set(coeff_set)
reg_coeff
coef_dic={}
for i in range(len(volatility_col)):
reg=LinearRegression(fit_intercept=False).fit(reg_setup(volatilities[volatility_col[i]],fractals[fd_col[i]]),y)
for item in reg_coeff:
coef_dic[item]=reg.coef_
return coef_dic
, где я перечисляю столбцы, и я запускаю al oop через значение индекса каждого столбца и затем хотите, чтобы вывод регрессии был вставлен в словарь в качестве значений, где ключами являются первые 6 букв столбца. Этот код дает мне вышеуказанную ошибку, но при тестировании вручную для указанных c столбцов он дает мне результат:
Для регрессии:
reg=LinearRegression(fit_intercept=False).fit(reg_setup(consolidated_volatility[volatility_col[0]],consolidated_fractal_d[fd_col[0]]),y)
reg.coef_
Out[126]: array([[3.06343571, 0.60383516]])
Для функции reg_setup:
for i in range(len(consolidated_volatility)):
a=[]
a.append(consolidated_volatility['EUR_USD_stdev'][i])
a.append(consolidated_fractal_d['EUR_USD_fd'][i])
x.append(a)
x #This throws a list of two columns, or a list with "x" amount of lists with two values
Кажется, я не могу понять, где моя ошибка, возможно, это что-то глупое, чего я не вижу, например, зацикливание на одной и той же вещи, но я не могу найти ее и дополнительная пара глаз наверняка поможет мне найти это. Также может быть неправильно с добавлением словарей, так как эта структура данных еще не совсем понятна для меня, но я могу понять это, как только мой регресс l oop сработает.
Спасибо всем!