예제 #1
0
 def build_week_players(self, week, season, games):
     """
     This method gets all of the information for each player.
     """
     #Dictionary to hold the defense information for the week
     defense_week = {}
     #Get player stats from nflgame
     player_stats = nflgame.combine_play_stats(games)
     #Process every player
     for player in player_stats:
         self.process_player(season, week, player, defense_week)
     #Copy final defense values into defense dictionary
     for team in defense_week:
         if team in self.defense:
             if self.teams[team].home:
                 defense_week[team].df['points_allowed'] = self.game_list[
                     season][week][team].score_away
             else:
                 defense_week[team].df['points_allowed'] = self.game_list[
                     season][week][team].score_home
             self.defense[team].update(defense_week[team].df, 1, 1)
         else:
             temp_def = Defense(self.teams[team])
             if self.teams[team].home:
                 defense_week[team].df['points_allowed'] = self.game_list[
                     season][week][team].score_away
             else:
                 defense_week[team].df['points_allowed'] = self.game_list[
                     season][week][team].score_home
             temp_def.update(defense_week[team].df, 1, 1)
             self.defense[team] = temp_def
     #Update ranks
     for game in games:
         self.ranks.add_game(game)
예제 #2
0
 def _step(self):
     iniciativas = self._draw_iniciativa()
     for grupo in iniciativas:
         for personagem in self._get_personagens_grupo(grupo):
             if not personagem.is_incapacitated():
                 acao = personagem.play(self.personagens, self.melee_nodes,
                                        self.team_groups)
                 acao.execute()
                 if isinstance(acao, Attack):
                     defense = Defense()
                     defense.attack_action = acao
                     defense.execute()
예제 #3
0
class Security(Base):
    def __init__(self, file_player):
        self.dir_data = self.dir_out + '/security'
        self.l_t_player_method_cmd = self.read_l_t_player_method_cmd(file_player, 'security')
        self.d = Defense(file_player)
        self.o = Offense(file_player)

    def get_fname(self, defense, shield, offense, spear, judge, metric, ext=''):
        ## 出力ファイル名の取得
        tag = '_'.join([defense, shield, offense, spear, judge, metric])
        return '/'.join([self.dir_data, tag + ext])

    def security(self):
        ## 安全性評価
        self.mkdir_p(self.dir_data)
        for defense, shield, _ in self.d.l_t_player_method_cmd:
            for offense, spear, _ in self.o.l_t_player_method_cmd:
                prefix = '{ncat} {r_csv} {tr} {a0} {f1} | '.format(
                    ncat=self.ncat,
                    r_csv=self.cwd + '/' + self.r_csv,
                    tr=self.cwd + '/' + self.tr,
                    a0=self.cwd + '/' + self.d.get_fname(defense, shield, '.A'),
                    f1=self.cwd + '/' + self.o.get_fname(defense, shield, offense, spear, '.F1'),
                )
                for judge, metric, cmd in self.l_t_player_method_cmd:
                    suffix = ' | {nsplit} {sec}'.format(
                        nsplit=self.nsplit,
                        sec=self.cwd + '/' + self.get_fname(defense, shield, offense, spear, judge, metric, '.S'))
                    cmd = prefix + cmd + suffix
                    twd = '/'.join([self.dir_lib, judge, metric])
                    fout = self.get_fname(defense, shield, offense, spear, judge, metric, '.out')
                    ferr = self.get_fname(defense, shield, offense, spear, judge, metric, '.err')
                    self.print_cmd(cmd, twd)
                    self.do_shell(cmd, twd, fout, ferr)
예제 #4
0
class Publish(Base):
    def __init__(self, file_player):
        self.dir_data = self.dir_out + '/publish'
        self.l_t_player_method_cmd = self.read_l_t_player_method_cmd(
            file_player, 'publish')
        self.d = Defense(file_player)

    def get_fname(self, defense, shield, ext=''):
        ## 出力ファイル名の取得
        tag = '_'.join([defense, shield])
        return '/'.join([self.dir_data, tag + ext])

    def publish(self):
        ## convert anonymized data to SHUFFLED anonymized data
        self.mkdir_p(self.dir_data)
        for defense, shield, _ in self.d.l_t_player_method_cmd:
            prefix = '{ncat} {a0} | '.format(
                ncat=self.ncat,
                a0=self.cwd + '/' + self.d.get_fname(defense, shield, '.A'),
            )
            for publish, pmethod, cmd in self.l_t_player_method_cmd:
                suffix = ' | {nsplit} {a1}'.format(
                    nsplit=self.nsplit,
                    a1=self.cwd + '/' + self.get_fname(defense, shield, '.A1'))
                cmd = prefix + cmd + suffix
                twd = '/'.join([self.dir_lib, publish, pmethod])
                self.print_cmd(cmd, twd)
                self.do_shell(cmd, twd, 'tmp.out', 'tmp.err')
예제 #5
0
 def process_player(self, season, week, player, defense_week):
     """
     This method gets all of the information for each player.
     """
     #Wrap stats in a dataframe
     stats = pd.DataFrame([player.stats])
     #Set season and week
     stats['season'] = season
     stats['week'] = week
     #Process based on offense or defense
     if ('QB' in player.guess_position or \
             'RB' in player.guess_position or \
             'WR' in player.guess_position or \
             'TE' in player.guess_position):
         #Check if player class is set in Player, class is needed for the number of years played
         if player.player is None:
             stats['years_played'] = 1
         else:
             stats['years_played'] = player.player.years_pro - (
                 self.current_year - season) + 1
         #If the player exists in the dictionary update their info, else create new player
         if player.playerid in self.players:
             self.players[player.playerid].setInfo(
                 player, self.current_year, season,
                 self.teams[get_id(player.team)])
             self.players[player.playerid].update(stats, 1, 1)
         else:
             temp_player = Player(player, self.teams[get_id(player.team)])
             temp_player.setInfo(player, self.current_year, season,
                                 self.teams[get_id(player.team)])
             temp_player.update(stats, 1, 1)
             self.players[player.playerid] = temp_player
     #Process defense player
     elif ('LB' in player.guess_position or \
             'DE' in player.guess_position or \
             'CB' in player.guess_position or \
             'FS' in player.guess_position or \
             'SS' in player.guess_position or \
             'DT' in player.guess_position or \
             'NT' in player.guess_position or \
             'DEF' in player.guess_position or \
             'SAF' in player.guess_position or \
             'DB' in player.guess_position):
         #Get unique ID of the players team
         team = get_id(player.team)
         #If the player's team exists update the stats, otherwise create new defense
         if team in defense_week:
             defense_week[team].build_week(stats)
             defense_week[team].setInfo(player.team)
         else:
             temp_def = Defense(self.teams[get_id(player.team)])
             temp_def.setInfo(player.team)
             temp_def.build_week(stats)
             defense_week[team] = temp_def
예제 #6
0
 def __init__(self, file_player):
     self.dir_data = self.dir_out + '/security'
     self.l_t_player_method_cmd = self.read_l_t_player_method_cmd(file_player, 'security')
     self.d = Defense(file_player)
     self.o = Offense(file_player)
예제 #7
0
 def __init__(self, file_player):
     self.dir_data = self.dir_out + '/offense'
     self.l_t_player_method_cmd = self.read_l_t_player_method_cmd(
         file_player, 'offense')
     self.d = Defense(file_player)
     self.p = Publish(file_player)
예제 #8
0
 def __init__(self, file_player):
     self.dir_data = self.dir_out + '/publish'
     self.l_t_player_method_cmd = self.read_l_t_player_method_cmd(
         file_player, 'publish')
     self.d = Defense(file_player)
예제 #9
0
x_test_adv = adv_crafter.generate(x_test, **params)

print("Before LabelSmoothing\n")
# Evaluate the classifier on the test set
preds = np.argmax(classifier.predict(x_test), axis=1)
acc = np.sum(preds == np.argmax(y_test, axis=1)) / y_test.shape[0]
print("Accuracy on legit samples: %.2f%% \n" % (acc * 100))
# Evaluate the classifier on the adversarial samples
preds = np.argmax(classifier.predict(x_test_adv), axis=1)
acc = np.sum(preds == np.argmax(y_test, axis=1)) / y_test.shape[0]
print('Accuracy on adversarial samples: %.2f%% \n' % (acc * 100))

from defense import Defense

print("Starting defense.")
d = Defense(x_train_adv, x_test_adv)
d.adversarial_training()

## LabelSmoothing
labelsmoother = LabelSmoothing()
x_train, y_train = labelsmoother(x_train, y_train, max_value=.8)
x_test, y_test = labelsmoother(x_test, y_test, max_value=.8)

## Create simple 2 hidden layer 64 nodes neural network
model = Sequential()
model.add(Dense(64, input_dim=784, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
classifier = KerasClassifier((min_, max_), model=model)
classifier.fit(x_train, y_train, nb_epochs=5, batch_size=50)
예제 #10
0
def main():
    """Main entry point of the application"""

    #
    # Call parameter analysis
    #
    if len(sys.argv) != 3:
        print("ERREUR: Pas assez de parametres")
        usage()
        return

    if sys.argv[1][0] != '-':
        print(
            """ERREUR: Le premier parametre devrait etre "-1" ou "-2" (sans les guillemets)"""
        )
        usage()
        return

    if len(sys.argv[1]) == 1 or sys.argv[1][1] not in "13":
        print(
            """ERREUR: Le premier parametre devrait etre "-1" ou "-3" (sans les guillemets)"""
        )
        usage()
        return

    #
    # We display cos version before starting the processing
    #
    print()
    print("cos version 2.0.2")
    print()

    #
    # Read all configuration data
    #
    conf = Conf(sys.argv[2])

    #
    # Read the list of defenses
    #
    defenses = []
    f = openWithErrorManagement(key2inputFileName("defensesFilename", conf),
                                "r",
                                encoding=conf.get("encoding"))
    nbLinesRead = [0]
    name = lookForNonBlankLine(f, nbLinesRead, True, "Nom soutenance")
    while name != "":
        defenses.append(Defense(name))
        name = lookForNonBlankLine(f, nbLinesRead, True, "Nom soutenance")
    f.close()

    #
    # Read the list of students and the title of their defense
    #
    students = []
    f = openWithErrorManagement(key2inputFileName("studentsFilename", conf),
                                "r",
                                encoding=conf.get("encoding"))
    nbLinesRead = [0]

    lookForNonBlankLine(
        f, nbLinesRead, True,
        "Nom soutenance")  # We ignore the line giving the title of the columns
    studentLine = lookForNonBlankLine(f, nbLinesRead, True, "Nom soutenance")
    while studentLine != "":
        info = splitCsvLine(studentLine, conf.get("csvSeparator"))
        # We look for info in the list of defense names
        found = False
        for defense in defenses:
            if info[1] == defense.name:
                # OK, this defense name is known
                students.append(Student(info[0], defense, defenses))
                found = True
                break
        if not found:
            sys.exit(
                """ERREUR: Dans le fichier "{}", la ligne {} ("{}") fait référence à une soutenance intitulée "{}" qui n'apparaît pas dans le fichier "{}"."""
                .format(conf.get("studentsFilename"), nbLinesRead[0],
                        studentLine, info[1], conf.get("defensesFilename")))
        studentLine = lookForNonBlankLine(f, nbLinesRead, True,
                                          "Nom soutenance")
    f.close()

    #
    # Read the list of criteria types
    #
    criteriaTypes = []
    f = openWithErrorManagement(key2inputFileName("criteriaTypesFilename",
                                                  conf),
                                "r",
                                encoding=conf.get("encoding"))
    nbLinesRead = [0]
    criteriaType = lookForNonBlankLine(f, nbLinesRead, True, "Type de critère")
    while criteriaType != "":
        criteriaTypes.append(criteriaType)
        criteriaType = lookForNonBlankLine(f, nbLinesRead, True,
                                           "Type de critère")
    f.close()

    #
    # Read the list of criterias
    #
    criterias = []
    f = openWithErrorManagement(key2inputFileName("criteriasFilename", conf),
                                "r",
                                encoding=conf.get("encoding"))
    nbLinesRead = [0]

    lookForNonBlankLine(
        f, nbLinesRead, True,
        "Nom critère")  # We ignore the line giving the title of the columns
    criteriaLine = lookForNonBlankLine(f, nbLinesRead, True, "Nom critère")
    while criteriaLine != "":
        info = splitCsvLine(criteriaLine, conf.get("csvSeparator"))
        # We look for info[0] in the list of criteria types
        found = False
        for criteriaType in criteriaTypes:
            if info[0] == criteriaType:
                found = True
                break
        if not found:
            sys.exit(
                """ERREUR: Dans fichier "{}", la ligne {} ("{}") fait référence à un type de critère intitulée "{}" qui n'apparaît pas dans le fichier "{}"."""
                .format(f.name, nbLinesRead[0], criteriaLine, info[0],
                        conf.get("criteriaTypesFilename")))
        # OK, this citeriaType is known
        try:
            floatValue = float(info[2])
        except ValueError:
            sys.exit(
                """ERREUR: Dans fichier "{}", la ligne {} ("{}") a son 3ème champ ("{}") qui n'est pas un flottant."""
                .format(f.name, nbLinesRead[0], criteriaLine, info[2]))
        criterias.append(
            Criteria(info[0], info[1], floatValue, conf.get("ratioCriteriaKO"),
                     conf.get("ratioCriteriaOK")))
        criteriaLine = lookForNonBlankLine(f, nbLinesRead, True, "Nom critère")
    f.close()

    #
    # Prepare dateTime string which may be used for names of output files
    #
    date = datetime.datetime.now()
    s = str(date)
    dateTime = s[:s.find('.')]

    #
    # Remaining work depends on what the user asks for
    #
    if sys.argv[1][1] == '1':
        generateModels(conf, defenses, students, criteriaTypes, criterias,
                       dateTime)
    else:
        analyzeTeacherData(conf, defenses, criteriaTypes, criterias)
        analyzeStudentsData(conf, defenses, students, criteriaTypes, criterias)
        generateResults(conf, defenses, students, criteriaTypes, criterias,
                        dateTime)

    #
    # We display an end of execution message
    #
    if sys.argv[1][1] == '1':
        print(
            """OK, exécution de la phase {} terminée : les fichiers "{}", "{}" et "{}" ont été générés."""
            .format(
                sys.argv[1][1],
                key2ouputFileName("nominativeSheetsFilename", conf, dateTime),
                key2ouputFileName("genericSheetFilename", conf, dateTime),
                key2ouputFileName("genericTeacherMarksFilename", conf,
                                  dateTime)))
    else:
        print(
            """OK, exécution de la phase {} terminée : les fichiers "{}", "{}" et "{}" ont été générés."""
            .format(
                sys.argv[1][1],
                key2ouputFileName("synthesisCommentsFilename", conf, dateTime),
                key2ouputFileName("evaluationCommentsFilename", conf,
                                  dateTime),
                key2ouputFileName("studentsMarksSheetFilename", conf,
                                  dateTime)))
    print()

    return