feature_name = ['QNH', 'TEMP', 'RH', 'absolute_temp', 'WS2A', 'CW2A'] train = data[200:, :] test = data[:200, :] train_target = target[200:] test_target = target[:200] from sklearn.ensemble import GradientBoostingRegressor gb = GradientBoostingRegressor(n_estimators=500, max_depth=10, learning_rate=0.01) relu_fit = RuleFit() relu_fit.max_iter = 4000 relu_fit.tree_generator = gb relu_fit.fit(train, train_target, feature_names=feature_name) f = relu_fit.predict(test) ff = relu_fit.predict(train) rule = relu_fit.get_rules() truth = 0 for i in range(test_target.shape[0]): if abs(test_target[i] - f[i]) / test_target[i] < 0.1: truth += 1 print("truth: ", truth / test_target.shape[0]) #print(rule) ruleset = pd.DataFrame(data=rule) writer = pd.ExcelWriter('./rules.xlsx') ruleset.to_excel(writer) writer.save()