这里没有太多智慧… 但我有一个脚本,它会使用for i in range
循环来编译和测试算法两次,看看均方根误差是否有任何变化。
是否可以修改代码,使循环能够测试两个不同的数据集?例如,df
首先运行一次编译rmse,然后df2
运行编译rmse,然后我可以比较/打印两个数据集之间的rmse。两个数据集都将使用['Demand']
作为响应变量。
#测试随机森林import numpy as npfrom sklearn import preprocessing, neighborsimport pandas as pdfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.externals import joblibimport mathrmses = []for i in range(2): X = np.array(df2.drop(['Demand'],1)) y = np.array(df2['Demand']) offset = int(X.shape[0] * 0.7) X_train, y_train = X[:offset], y[:offset] X_test, y_test = X[offset:], y[offset:] clf = RandomForestRegressor(n_estimators=60, min_samples_split=6) clf.fit(X_train, y_train) mse = mean_squared_error(y_test, clf.predict(X_test)) rmse = math.sqrt(mse) print("rmse: %.4f" % rmse) rmses.append(rmse)print(sum(rmses)/len(rmses))
回答:
你可以使用一个辅助数据框,并通过条件在每次迭代中分配你想要编译的数据框:
for i in range(2): if i==1: aux_df = df else: aux_df = df2 . . .
这样你就可以在第一次迭代中使用第一个df
,在第二次迭代中使用df2
。