Sci-kit учить скрипт машинного обучения для 2 наборов данных - PullRequest
0 голосов
/ 20 февраля 2020

Здесь не много мудрости ... Но у меня есть скрипт, который скомпилирует и протестирует алгоритм два раза с for i in range l oop, чтобы увидеть, есть ли какие-либо изменения в root среднеквадратичной ошибке.

Можно ли изменить код, в котором l oop будет работать для проверки двух разных наборов данных? IE, df сначала запускает компиляцию rmse, а затем df2 может запускать компиляцию rmse, а затем я могу сравнивать / печатать rmse между двумя .. Оба набора данных будут иметь тот же ['Demand'], что и переменная ответа.

#Test random Forest

import numpy as np
from sklearn import preprocessing, neighbors
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.externals import joblib
import math

rmses = []
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))

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Вы можете создать список 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))
0 голосов
/ 20 февраля 2020

Вы можете использовать знакомый df и назначить кадр данных, который вы хотите скомпилировать на каждой итерации, используя условие:

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

Таким образом, вы можете использовать первый df в первой итерации и df2 во второй итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...