Как сохранить результат переменной y_pred из значений «for-lop» в массиве или списке numpy? - PullRequest
1 голос
/ 29 мая 2020

Я пишу код для SVR. У меня есть наборы данных с более чем 2000 строками и 22 столбцами. После прогнозирования на каждой итерации для y_pred с использованием for loop, поэтому мне нужно store все значения y_pred, которые происходят из for loop. Я хочу сохранить эти значения в list или numpy array. Я пишу свой код, но он не работает. Пожалуйста, помогите мне правильно написать этот код. Я знаю роль

numpyarray = np.empty((1001,2000, 23))
for i in range(1001):
    numpyarray[i, :] = numpyarrayfunction

Комментарий: Но это не работает.

Мой полный код:

import pandas as pd
import numpy as np

# Make fake dataset
dataset = pd.DataFrame(data= np.random.rand(2000,22))
dataset['age'] = np.random.randint(2, size=2000)

# Separate the target from the other features
target = dataset['age']
data = dataset.drop('age', axis = 1)

X_train, y_train = data.loc[:1000], target.loc[:1000]

X_test,  y_test  = data.loc[1001], target.loc[1001] 

X_test = np.array(X_test).reshape(1, -1)
print(X_test.shape)

SupportVectorRefModel = SVR()
SupportVectorRefModel.fit(X_train, y_train)

y_pred = SupportVectorRefModel.predict(X_test)
y_pred

for i in range(1, 1001):
    X_train, y_train = dataset.iloc[i:1000+i], target.iloc[i:1000+i]
    X_test, y_test = dataset.iloc[i], target.iloc[i]

    X_test = np.array(X_test).reshape(1, -1)
    print(X_test.shape)

    SupportVectorRefModel = SVR()
    SupportVectorRefModel.fit(X_train, y_train)
    y_pred = SupportVectorRefModel.predict(X_test)

Мой текущий код:

numpyarray = np.empty((1001,2000, 23))
    for i in range(1001):
        numpyarray[i, :] = numpyarrayfunction

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

Это то, что вы хотите?

from sklearn import svm
import pandas as pd
import numpy  as np

dataset        = pd.DataFrame(data= np.random.rand(2000,22))
dataset['age'] = np.random.randint(2, size=2000)
target         = dataset['age'] 
data           = dataset.drop('age', axis = 1)

y_pred = np.empty((1000,))
for i in range(1, 1001):
    X_train, y_train = dataset.iloc[i:1000+i], target.iloc[i:1000+i]
    X_test,  y_test  = dataset.iloc[i],        target.iloc[i]
    X_test           = np.array(X_test).reshape(1, -1)
    model            = svm.SVR(gamma='scale') # Avoid the printed future warning. 
    model.fit(X_train, y_train)
    y_pred[i-1]      = model.predict(X_test)
print(y_pred)
1 голос
/ 29 мая 2020

Кажется, вы тренируетесь на разных данных, технически циклы вам не нужны.

Но, если вы хотите, чтобы все было по-своему, просто попробуйте следующее:

y_pred_sol = []
for i in range(1, 1001):
    X_train, y_train = dataset.iloc[i:1000+i], target.iloc[i:1000+i]
    X_test, y_test = dataset.iloc[i], target.iloc[i]

    X_test = np.array(X_test).reshape(1, -1)
    print(X_test.shape)

    SupportVectorRefModel = SVR()
    SupportVectorRefModel.fit(X_train, y_train)
    y_pred = SupportVectorRefModel.predict(X_test)
    y_pred_sol.append(y_pred)

print(y_pred_sol)

...