У меня есть фрейм данных со стоимостью, ветром, солнечной энергией и часом дня, и я хотел бы использовать модель линейной регрессии из scikit-learn, чтобы выяснить, как ветер и солнечная энергия влияют на стоимость. Каждый час я помечал P1-P24 (24 часа в сутки), то есть каждой строке в зависимости от часа дня будет назначаться P (1-24)
. Поэтому я определил каждую соответствующую строкуветер / солнечная энергия / стоимость для разных данных в зависимости от времени суток
Код работает нормально со всем, что я хотел сделать. Однако я изо всех сил пытаюсь создать код цикла for, который запускается несколько раз в течение каждого часа, чтобы найти функцию linreg.intercept, linreg.coef и np.sqrt (metrics.mean_squared_error (y_test, y_pred) из scikit-learn на различных фреймах данных панды (P1 - P24). ).
Так что на данный момент мне нужно вручную изменить число P 24 раза, чтобы найти соответствующую ошибку перехвата / коэффициента / среднего квадрата для каждого часа
У меня есть код ниже для работыно я всегда изо всех сил пытаюсь построить цикл for
Я пытался построить цикл for, используя for i в [P1, P2 ...], но информационный фрейм стал списком, и я также изо всех сил стараюсь включить его в scikit-часть обучения
b - это исходный кадр данных со столбцами: стоимость, период (полчаса, поэтому у меня период от 1 до 48), ветер, солнечная
импорт данных, кадр
b = pd.read_csv('/Users/Downloads/cost_latest.csv')
Чтобы поставить это в почасовой, следовательно:
P1 = b[b['Period'].isin(['01','02'])]
P2 = b[b['Period'].isin(['03','04'])]...
часть scikit-learn:
feature_cols = ['wind','Solar']
X = P1[feature_cols]
y = P1['Price']
и вот моя проблема, мне нужно изменить P1 на P2 ... P24 перед запуском следуйтеКоды для получения моих параметров
Следующее является частью обучения scikit:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
подгонка модели к данным тренировки (выучить коэффициенты)
linreg.fit(X_train, y_train)
print(linreg.intercept_)
print(linreg.coef_)
list(zip(feature_cols, linreg.coef_))
y_pred = linreg.predict(X_test)
from sklearn import metrics
print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
Я думаю, что есть более разумный способ избежать ручного редактирования следующего (значения P) и запуска всего за один раз, я приветствую ваши советы, предложения, спасибо
X = P1[feature_cols]
y = P1['Price']