适用于2个数据集的Sci-kit学习机器学习脚本

时间:2020-02-20 17:07:47

标签: python machine-learning scikit-learn regression

这里没有很多知识...但是我有一个脚本,将使用for i in range循环对算法进行两次编译和测试,以查看均方根误差是否有变化。

是否可以在循环将用于测试两个不同数据集的地方修改代码? IE,df会先运行一次rmse编译,然后df2会运行rmse编译,然后我可以比较/打印两者之间的rmse。两个数据集将具有相同的{{1 }}作为响应变量。

['Demand']

2 个答案:

答案 0 :(得分:1)

您可以创建dfs列表并对其进行迭代:

rmses = []
df_lst = [df1, df2]
for df in df_lst:

    X = np.array(df.drop(['Demand'],1))
    y = np.array(df['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))

答案 1 :(得分:0)

您可以使用辅助df,并使用条件分配要在每次迭代中编译的数据框:

for i in range(2):
    if i==1:
        aux_df = df
    else:
        aux_df = df2
    .
    .
    .

这样,您可以在第一次迭代中使用第一个df,在第二次迭代中使用df2