def encode_horse_df(self, horse_df, dict_folder): """ 列をエンコードする処理。騎手名、所属、転厩をラベルエンコーディングして値を置き換える。learning_modeがTrueの場合は辞書生成がされる。 :param dataframe horse_df: :return: dataframe """ temp_horse_df = horse_df.copy() temp_horse_df = self.choose_upper_n_count(temp_horse_df, "繁殖登録番号1", 50, dict_folder) temp_horse_df.loc[:, '繁殖登録番号1'] = mu.label_encoding( horse_df['繁殖登録番号1'], '騎手名', dict_folder).astype(str) temp_horse_df = self.choose_upper_n_count(temp_horse_df, "繁殖登録番号3", 50, dict_folder) temp_horse_df.loc[:, '繁殖登録番号3'] = mu.label_encoding( horse_df['繁殖登録番号3'], '調教師名', dict_folder).astype(str) temp_horse_df = self.choose_upper_n_count(temp_horse_df, "繁殖登録番号5", 50, dict_folder) temp_horse_df.loc[:, '繁殖登録番号5'] = mu.label_encoding( horse_df['繁殖登録番号5'], '調教師名', dict_folder).astype(str) temp_horse_df = self.choose_upper_n_count(temp_horse_df, "生産者コード", 20, dict_folder) temp_horse_df.loc[:, '生産者コード'] = mu.label_encoding( horse_df['生産者コード'], '調教師名', dict_folder).astype(str) temp_horse_df = self.choose_upper_n_count(temp_horse_df, "馬主コード", 100, dict_folder) temp_horse_df.loc[:, '馬主コード'] = mu.label_encoding(horse_df['馬主コード'], '調教師名', dict_folder).astype(str) return temp_horse_df.copy()
def encode_raceuma_before_df(self, raceuma_df, dict_folder): """ 列をエンコードする処理。騎手名、所属、転厩をラベルエンコーディングして値を置き換える。learning_modeがTrueの場合は辞書生成がされる。 :param dataframe raceuma_df: :return: dataframe """ temp_raceuma_df = raceuma_df.copy() temp_raceuma_df = self.choose_upper_n_count(temp_raceuma_df, "騎手名", 100, dict_folder) temp_raceuma_df.loc[:, '騎手名'] = mu.label_encoding(raceuma_df['騎手名'], '騎手名', dict_folder).astype(str) temp_raceuma_df = self.choose_upper_n_count(temp_raceuma_df, "調教師名", 100, dict_folder) temp_raceuma_df.loc[:, '調教師名'] = mu.label_encoding( raceuma_df['調教師名'], '調教師名', dict_folder).astype(str) temp_raceuma_df.loc[:, '所属'] = mu.label_encoding(raceuma_df['所属'], '所属', dict_folder).astype(str) temp_raceuma_df.loc[:, '転厩'] = mu.label_encoding(raceuma_df['転厩'], '転厩', dict_folder).astype(str) temp_raceuma_df.loc[:, '予想展開'] = temp_raceuma_df["予想展開"].astype(str) return temp_raceuma_df.copy()
def encode_raceuma_df(self, raceuma_df, dict_folder): """ 列をエンコードする処理。騎手名、所属、転厩をラベルエンコーディングして値を置き換える。learning_modeがTrueの場合は辞書生成がされる。 :param dataframe raceuma_df: :return: dataframe """ #raceuma_df.loc[:, 'ペース予想'] = raceuma_df['ペース予想'].apply(lambda x: self._convert_pace(x)) #raceuma_df.loc[:, '調教曜日'] = raceuma_df['調教曜日'].apply(lambda x: self._convert_weekday(x)) raceuma_df.loc[:, '放牧先ランク'] = raceuma_df['放牧先ランク'].apply( lambda x: self._convert_rank(x)) raceuma_df.loc[:, '調教量評価'] = raceuma_df['調教量評価'].apply( lambda x: self._convert_rank(x)) raceuma_df.loc[:, '調教師所属'] = mu.label_encoding(raceuma_df['調教師所属'], '調教師所属', dict_folder).astype(str) raceuma_df.loc[:, '馬主名'] = mu.label_encoding(raceuma_df['馬主名'], '馬主名', dict_folder).astype(str) raceuma_df.loc[:, '放牧先'] = mu.label_encoding(raceuma_df['放牧先'], '放牧先', dict_folder).astype(str) # raceuma_df.loc[:, '激走タイプ'] = mu.label_encoding(raceuma_df['激走タイプ'], '激走タイプ', dict_folder).astype(str) raceuma_df.loc[:, '調教コースコード'] = mu.label_encoding(raceuma_df['調教コースコード'], '調教コースコード', dict_folder).astype(str) # raceuma_df.loc[:, 'LS評価'] = raceuma_df['LS評価'].apply(lambda x: mu.convert_ls_hyouka(x)) #hash_taikei_column = ["走法", "体型01", "体型02", "体型03", "体型04", "体型05", "体型06", "体型07", "体型08", "体型09", "体型10", "体型11", "体型12", "体型13", "体型14", "体型15", "体型16", "体型17", "体型18", "体型総合1", "体型総合2", "体型総合3"] #hash_taikei_dict_name = "raceuma_before_taikei" #raceuma_df = mu.hash_eoncoding(raceuma_df, hash_taikei_column, 3, hash_taikei_dict_name, dict_folder) #hash_tokki_column = ["馬特記1", "馬特記2", "馬特記3"] #hash_tokki_dict_name = "raceuma_before_tokki" #raceuma_df = mu.hash_eoncoding(raceuma_df, hash_tokki_column, 2, hash_tokki_dict_name, dict_folder) return raceuma_df
def encode_horse_df(self, horse_df, dict_folder): """ 列をエンコードする処理(ラベルエンコーディング、onehotエンコーディング等)""" horse_df.loc[:, '父馬名'] = mu.label_encoding(horse_df['父馬名'], '父馬名', dict_folder).astype(str) horse_df.loc[:, '母父馬名'] = mu.label_encoding(horse_df['母父馬名'], '母父馬名', dict_folder).astype(str) horse_df.loc[:, '生産者名'] = mu.label_encoding(horse_df['生産者名'], '生産者名', dict_folder).astype(str) horse_df.loc[:, '産地名'] = mu.label_encoding(horse_df['産地名'], '産地名', dict_folder).astype(str) return horse_df
def encode_horse_df(self, horse_df, dict_folder): """ 列をエンコードする処理。調教師所属、所属、転厩をラベルエンコーディングして値を置き換える。辞書がない場合は作成される 騎手名とかはコードがあるからそちらを使う(作成しない) :param dataframe raceuma_df: :return: dataframe """ temp_horse_df = horse_df.copy() temp_horse_df.loc[:, '父馬名'] = mu.label_encoding(horse_df['父馬名'], '父馬名', dict_folder).astype(str) temp_horse_df.loc[:, '母父馬名'] = mu.label_encoding(horse_df['母父馬名'], '母父馬名', dict_folder).astype(str) return temp_horse_df.copy()
def encode_raceuma_before_df(self, raceuma_df, dict_folder): """ 列をエンコードする処理。調教師所属、所属、転厩をラベルエンコーディングして値を置き換える。辞書がない場合は作成される 騎手名とかはコードがあるからそちらを使う(作成しない) :param dataframe raceuma_df: :return: dataframe """ temp_raceuma_df = raceuma_df.copy() temp_raceuma_df.loc[:, 'ペース予想'] = temp_raceuma_df['ペース予想'].apply( lambda x: self._convert_pace(x)) temp_raceuma_df.loc[:, '調教曜日'] = temp_raceuma_df['調教曜日'].apply( lambda x: self._convert_weekday(x)) temp_raceuma_df.loc[:, '放牧先ランク'] = temp_raceuma_df['放牧先ランク'].apply( lambda x: self._convert_rank(x)) temp_raceuma_df.loc[:, '調教量評価'] = temp_raceuma_df['調教量評価'].apply( lambda x: self._convert_rank(x)) temp_raceuma_df.loc[:, '調教師所属'] = mu.label_encoding( raceuma_df['調教師所属'], '調教師所属', dict_folder).astype(str) temp_raceuma_df.loc[:, '馬主名'] = mu.label_encoding(raceuma_df['馬主名'], '馬主名', dict_folder).astype(str) temp_raceuma_df.loc[:, '放牧先'] = mu.label_encoding(raceuma_df['放牧先'], '放牧先', dict_folder).astype(str) temp_raceuma_df.loc[:, '激走タイプ'] = mu.label_encoding( raceuma_df['激走タイプ'], '激走タイプ', dict_folder).astype(str) temp_raceuma_df.loc[:, '調教コースコード'] = mu.label_encoding( raceuma_df['調教コースコード'], '調教コースコード', dict_folder).astype(str) hash_taikei_column = [ "走法", "体型01", "体型02", "体型03", "体型04", "体型05", "体型06", "体型07", "体型08", "体型09", "体型10", "体型11", "体型12", "体型13", "体型14", "体型15", "体型16", "体型17", "体型18", "体型総合1", "体型総合2", "体型総合3" ] hash_taikei_dict_name = "raceuma_before_taikei" temp_raceuma_df = mu.hash_eoncoding(temp_raceuma_df, hash_taikei_column, 3, hash_taikei_dict_name, dict_folder) hash_tokki_column = ["馬特記1", "馬特記2", "馬特記3"] hash_tokki_dict_name = "raceuma_before_tokki" temp_raceuma_df = mu.hash_eoncoding(temp_raceuma_df, hash_tokki_column, 2, hash_tokki_dict_name, dict_folder) return temp_raceuma_df.copy()
def get_label_encoding_race_df(self, base_df, index_list): categorical_feats = base_df.dtypes[base_df.dtypes == "object"].index.tolist() for val in index_list: if val in categorical_feats: categorical_feats.remove(val) for categ in categorical_feats: base_df.loc[:, categ] = mu.label_encoding( base_df[categ], "rc_" + categ, self.dict_folder).astype(str) return base_df
def encode_raceuma_result_df(self, raceuma_df, dict_folder): """ 列をエンコードする処理。騎手名をラベルエンコーディングして値を置き換える。 :param dataframe raceuma_df: :return: dataframe """ temp_raceuma_df = raceuma_df.copy() temp_raceuma_df = self.choose_upper_n_count(temp_raceuma_df, "騎手名", 150, dict_folder) temp_raceuma_df.loc[:, '騎手名'] = mu.label_encoding(raceuma_df['騎手名'], '騎手名', dict_folder).astype(str) return temp_raceuma_df.copy()
def encode_raceuma_result_df(self, raceuma_df, dict_folder): """ 列をエンコードする処理。騎手名、所属、転厩をラベルエンコーディングして値を置き換える。learning_modeがTrueの場合は辞書生成がされる。 :param dataframe raceuma_df: :return: dataframe """ print("-- check! this is BaseTransform class: " + sys._getframe().f_code.co_name) temp_raceuma_df = raceuma_df.copy() temp_raceuma_df.loc[:, '騎手名'] = mu.label_encoding(raceuma_df['騎手名'], '騎手名', dict_folder).astype(str) temp_raceuma_df.loc[:, '所属'] = mu.label_encoding(raceuma_df['所属'], '所属', dict_folder).astype(str) temp_raceuma_df.loc[:, '転厩'] = mu.label_encoding(raceuma_df['転厩'], '転厩', dict_folder).astype(str) return temp_raceuma_df.copy()
def encode_raceuma_result_df(self, raceuma_df, dict_folder): """ 列をエンコードする処理。騎手名、所属、転厩をラベルエンコーディングして値を置き換える。learning_modeがTrueの場合は辞書生成がされる。 :param dataframe raceuma_df: :return: dataframe """ temp_raceuma_df = raceuma_df.copy() temp_raceuma_df = self.choose_upper_n_count(temp_raceuma_df, "騎手名", 100, dict_folder) temp_raceuma_df.loc[:, '騎手名'] = mu.label_encoding(raceuma_df['騎手名'], '騎手名', dict_folder).astype(str) temp_raceuma_df.loc[:, '展開脚質'] = raceuma_df['展開コード'].astype( str).str[:1].astype(int) temp_raceuma_df.loc[:, '展開脚色'] = raceuma_df['展開コード'].astype( str).str[-1:].astype(int) return_df = temp_raceuma_df.drop('展開コード', axis=1) return return_df
def get_label_encoding_df(self, base_df): categorical_feats = base_df.dtypes[base_df.dtypes == "object"].index.tolist() for categ in categorical_feats: base_df.loc[:, categ] = mu.label_encoding(base_df[categ], categ, self.dict_folder).astype(str) return base_df