class PolyFeaturesImplementation(EncodedInvariantImplementation): """ Class for application of PolynomialFeatures operation on data, where only not encoded features (were not converted from categorical using OneHot encoding) are used :param params: optional, dictionary with the arguments """ def __init__(self, **params: Optional[dict]): super().__init__() if not params: # Default parameters self.operation = PolynomialFeatures(include_bias=False) else: # Checking the appropriate params are using or not poly_params = {k: params[k] for k in ['degree', 'interaction_only']} self.operation = PolynomialFeatures(include_bias=False, **poly_params) self.params = params def get_params(self): return self.operation.get_params()
def get_params(self, deep=True): return PolynomialFeatures.get_params(self, deep=deep)
plt.plot(data_x, curve_polynomial, 'b.') plt.xlabel("np.linspace(0, 8, 32)") plt.ylabel("curve fitting using Linear") hypo = np.dot(data_x, linear_reg.coef_.T) + linear_reg.intercept_ hypo_fail = np.dot(data_x, linear_reg_fail.coef_.T) + linear_reg_fail.intercept_ print(mean_squared_error(hypo, curve_linear)) # MSE: 0.00069 print(mean_squared_error(hypo_fail, curve_polynomial)) # MSE: 6.40752 elif method_reg == "non-linear": method_reg = value elif method_reg == "polynomial": poly_features_1 = PolynomialFeatures(degree = 3) linear_reg = LinearRegression() linear_reg.fit(poly_features_1.fit_transform(data_x), curve_linear) print(poly_features_1.get_params()) fit_x = np.linspace(start = 0, stop = sample_cnt/4, num = 1024).reshape(-1, 1) fit_linear = linear_reg.predict(poly_features_1.fit_transform(fit_x)) plt.subplot(2, 2, 3) plt.plot(fit_x, fit_linear, 'r-') plt.plot(data_x, curve_linear, 'b.') plt.xlabel("np.linspace(0, 8, 32)") plt.ylabel("curve fitting using Polynomial") poly_features_3 = PolynomialFeatures(degree = 3) linear_reg_best = LinearRegression() linear_reg_best.fit(poly_features_3.fit_transform(data_x), curve_polynomial) fit_x = np.linspace(start = 0, stop = sample_cnt/4, num = 1024).reshape(-1, 1) fit_linear_best = linear_reg_best.predict(poly_features_3.fit_transform(fit_x))