Как использовать GridSearchCV для гиперпараметрирования модели, созданной вручную, при этом параметры являются записями в кадре данных? - PullRequest
0 голосов
/ 17 июня 2020
• 1000 значение.

Некоторые из этих переменных представляют собой значения, присвоенные записям в другом столбце. Например, есть столбец видимости, который можно заполнить цифрами от 1 до 5, однако этим номерам присвоены значения, которые используются при фактическом расчете модели. Например: видимость 1 будет 0,5. Видимость 2 будет 0,65. Видимость 3 будет 0,7 .. вы понимаете

В итоге вы получите столбец под названием «видимость» во фрейме данных, который может быть заполненным от 1 до 5 и другой столбец, называемый «вес видимости», значение которого определяется значением, которому присвоена соответствующая оценка видимости. ошибка и абсолютная ошибка между прогнозируемым баллом и фактическим баллом. Суммирование среднего обоих из них возвращается моделью - это то, что я хочу минимизировать.

Я хочу сделать гиперпараметрические значения, присвоенные видимости 1, 2, 3 и c, чтобы уменьшить общую абсолютную среднюю ошибку.

До сих пор я воссоздал модель, которая возвращает общую абсолютную среднюю ошибку.

То, что я застрял в как реализовать это в GridSearchCV, потому что как бы вы сказали GridSearchCV, чтобы он проверял разные значения «веса видимости» каждой записи столбца видимости во фрейме данных, и как бы вы сказали ему минимизировать значение, выдаваемое моделью?

Я добавил код, если это помогает:

def model():
model_results = pd.DataFrame(index=range(0,len(fdata.index)), columns=['Model Replica Prediction','Actual Results','Error','Absolute Error'])
for i in range(0, len(fdata.index)):
    model_results.loc[i,'Actual Results'] = float(str(fdata['Actual Sales'].iloc[i]).replace(',','').replace('£',''))
    if fdata['100 pop'].iloc[i] < 1000:
        model_results.loc[i,'Model Replica Prediction'] = float(min((fdata['market size'].iloc[i]*fdata['Visibility weight'].iloc[i]*fdata['Commute quality weight'].iloc[i]*fdata['Nearby corner shops'].iloc[i], 10*fdata['sqft'].iloc[i]))
    else:
        model_results.loc[i,'Model Replica Prediction'] = float(fdata['Road score weight'].iloc[i]*fdata['50m pop'].iloc[i])+fdata['Worker uplift'].iloc[i])
    if model_results['Actual Results'].iloc[i] != 0:
        model_results.loc[i,'Error'] = float((model_results['Model Replica Prediction'].iloc[i] - model_results['Actual Results'].iloc[i])/model_results['Actual Results'].iloc[i])
    else:
        model_results.loc[i,'Error'] = np.nan
    model_results.loc[i,'Absolute Error'] = float(((model_results['Error'].iloc[i])**2)**0.5)
mean_error = model_results['Error'].mean(skipna=True)
mean_abs_error = model_results['Absolute Error'].mean(skipna=True)
mod_mean_error = (mean_error**2)**0.5
error_sum = mod_mean_error + mean_abs_error
return error_sum
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...