예제 #1
0
 def plot_num_var_threshold(self,
                            tmin: float = 0,
                            tmax: float = 1,
                            step: float = 0.01):
     """
     Plots the number of variables as a function of the threshold defined to drop.
     Goes from 'tmin' to 'tmax' on 'step' steps.
     :return: --- <class 'NoneType'>
     """
     indexes = [0, 1, 2, 3, 4, 5, 6, 7]
     plt.figure(figsize=(7, 5))
     for i in indexes:
         print(i)
         vals = self.compute_num_var_threshold(tmin=tmin,
                                               tmax=tmax,
                                               step=step,
                                               idx=i)
         pF.single_line_chart(
             plt.gca(),
             vals[0],
             vals[1],
             layout=pF.LayoutStyleObject(
                 title='Number of Variables as a function of the Threshold',
                 xlabel='Threshold',
                 ylabel='Number of Variables',
                 grid=True),
             plotstyle=pF.PlotStyleObject(color='Blue',
                                          marker='o',
                                          alpha=0.5))
     plt.show()
예제 #2
0
 def plot_gradient_boost(self,
                         drop: bool = True,
                         norm: bool = False,
                         threshold: float = 1):
     """
     For the given input, plots the single line chart for Gradient Boost results as a function of max_depths.
     :return: --- <class 'NoneType'>
     """
     plt.subplots(1, 1, figsize=(16, 4), squeeze=False)
     max_depths = [5, 10, 15, 20]
     pF.single_line_chart(plt.gca(),
                          max_depths,
                          self.compute_gradient_boost(
                              drop, norm, threshold),
                          'XGBoost',
                          'XGBoost',
                          'Max Depths',
                          'accuracy',
                          percentage=True)
     plt.show()
예제 #3
0
def Boost(drop: bool = True, norm: bool = False, threshold: float = 1):
    if drop:
        full_set = data.compute_data_drop(threshold)
    else:
        full_set = data.compute_data_average(threshold)

    y: np.ndarray = full_set.pop('class').values

    if norm:
        X: np.ndarray = preprocessing.normalize(full_set.values)
    else:
        X: np.ndarray = full_set.values

    labels = pd.unique(y)

    trnX, tstX, trnY, tstY = train_test_split(X, y, train_size=0.7, stratify=y)

    max_depths = [5, 10, 15, 20]

    fig, axs = plt.subplots(1, 1, figsize=(16, 4), squeeze=False)

    values = []
    for d in max_depths:
        yvalues = []
        boost = XGBClassifier(max_depth=d)
        boost.fit(trnX, trnY)
        prdY = boost.predict(tstX)
        yvalues.append(metrics.accuracy_score(tstY, prdY))
        values.append(yvalues)

    pF.single_line_chart(plt.gca(),
                         max_depths,
                         values,
                         'XGBoost',
                         'XGBoost',
                         'Max Depths',
                         'accuracy',
                         percentage=True)
    plt.show()