我有一个包含成本,风能,太阳能和一天中的小时的数据框,并且喜欢使用scikit-learn的线性回归模型来查找风能和太阳能如何影响成本。我已经用P1-P24(每天24小时)标记了每个小时,即取决于一天中的小时,每一行都将被分配一个P(1-24)
因此,我已经根据一天中的小时将风/太阳能/成本的每一行定义为不同的数据帧
该代码可以运行所有我想做的事情。但是我很难建立一个每小时重复运行的for循环代码,以从scikit-learn上的各种熊猫数据帧(P1至P24)中查找linreg.intercept,linreg.coef和np.sqrt(metrics.mean_squared_error(y_test,y_pred)函数)。
因此,目前我必须手动更改P数24次,以找到每小时对应的截距/系数/均方误差
我下面有一些工作代码,但我总是很难为循环构建
我试图在[P1,P2 ...]中使用for来构建for循环,但数据帧成为一个列表,我也很难将其合并到scikit-learn部分
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学习部分:
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']
只需使用此:
for P in [P1,P2, P3,P4,P5,P6,P7]:
X = P[feature_cols]
y = P['Price']
全部一起:
from sklearn import metrics
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
all_intercepts = []
all_coefs = []
for P in [P1,P2, P3,P4,P5,P6,P7]:
X = P[feature_cols]
y = P['Price']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
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)
print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
all_intercepts.append(linreg.intercept_)
all_coefs.append(linreg.coef_)
print(all_intercepts)
print(all_coefs)
P
根据每次迭代,将成为您的数据帧P1,P2,...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句