Списки удвоились по размеру - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь сохранить значения statsmodel.ols rsquared и rsquared_adj для каждого столбца в паре разных списков, чтобы впоследствии я мог самостоятельно создать новый кадр данных с именем столбца, оценкой и скорректированной оценкой для каждого столбца. Данные, которые я использую, представляют собой фрейм данных с 238 столбцами (я хочу индивидуально протестировать 231 из них, т. Е. Для каждого столбца протестировать оценку r2 для этого столбца самостоятельно).

Когда я сохраняю statsmodel.ols.rsquared (и rsquared_adj и имя столбца) в списке и перебираю все столбцы, которые хочу протестировать, я получаю 462 значения в списке. Я ожидал только половину этого числа.

Я все еще только учусь, как использовать python для анализа данных, поэтому мой код, вероятно, очень неэффективен, но я включил его ниже, так что, надеюсь, кто-то может объяснить, где я ошибаюсь.

Заранее спасибо всем, кто может помочь мне понять, почему мой код делает это.

#import libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
import time
from sklearn.model_selection import train_test_split
import random
import openpyxl as op

#timing start the clock
start = time.time()

#Create empty lists
score_adj = []
score = []
col_name = []

#Assign variables
dirname = os.path.dirname(__file__)
path = dirname + "/iteration1/"
r = random.randint(1,1000)

infile, X_col, y_col = ('test_summary_with_weather_columns', 
np.arange(7,238), 3)

#create df
for x in range (1,3):
    filename = path + infile + str(x) + '.csv'
    df = pd.read_csv(filename)
    dfr = df.iloc[:,X_col]

#Assign X & y
    X = df.iloc[:, X_col].values
    y = df.iloc[:, y_col].values
    first_X_column = X_col[0]

#import library and prepare df 
    import statsmodels.formula.api as sm
    numRows = df.shape[0]
    X = np.append(arr = np.ones((numRows, 1)).astype(int), values = X, axis 
= 1)

# Split into training and test set
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 
0.2, random_state=r)

#Assign X_col
    for xc in range (1,232):
        X_train_single = X_train[:, xc]

##fit regressor
        regressor_ols = sm.OLS(endog = y_train, exog = X_train_single).fit()

#Assign values to lists
        score_adj.append(regressor_ols.rsquared_adj)
        score.append(regressor_ols.rsquared)
        col_name.append(dfr.columns[xc-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...