Индивидуальное тестирование против функции не работает - PullRequest
0 голосов
/ 13 марта 2020

Итак, у меня есть код, который в основном должен запускать следующее:

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 сработает.

Спасибо всем!

...