Example #1
0
class PoliceNormModel:
    def __init__(self):
        self.dr = DataReader()

    def hook_process(self):
        print('----------------1. cctv 파일 DF 생성--------------------')
        self.create_crime_rate()

    def create_crime_rate(self):
        self.dr.context = './saved_data/'
        self.dr.fname = 'crime_police.csv'
        police_crime = self.dr.csv_to_dframe()
        police = pd.pivot_table(police_crime, index='구별', aggfunc=np.sum)
        print(police.columns)
        police['살인검거율'] = (police['살인 검거'] / police['살인 발생']) * 100
        police['강도검거율'] = (police['강도 검거'] / police['강도 발생']) * 100
        police['강간검거율'] = (police['강간 검거'] / police['강간 발생']) * 100
        police['절도검거율'] = (police['절도 검거'] / police['절도 발생']) * 100
        police['폭력검거율'] = (police['폭력 검거'] / police['폭력 발생']) * 100
        police.drop(columns={'살인 검거','강도 검거','강간 검거','절도 검거','폭력 검거'}, axis=1)
        crime_rate_columns = ['살인검거율','강도검거율','강간검거율','절도검거율','폭력검거율']
        for i in crime_rate_columns:
            police.loc[police[i] > 100, 1] = 100 #비율이 100%가 넘는 경우 100으로 치환
        police.rename(columns = {
            '살인 발생' : '살인',
            '강도 발생' : '강도',
            '강간 발생' : '강간',
            '절도 발생' : '절도',
            '폭력 발생' : '폭력'
        }, inplace=True)

        crime_columns = ['살인', '강도', '강간', '절도', '폭력']

        x = police[crime_rate_columns].values

        min_max_scalar = preprocessing.MinMaxScaler()
        #차원이 올라가면 collection이 객체로 전환됨
        #return되는 값의 차원이 올라가면 scalar로 전환
        #결국, 학습결과로 최종적으로 산출되는 것은 scalar(단위값). collection이 아님
        # 스케일링은 선형변환을 적응하여 전체 자료의 분포를 평균 0, 분산 1이 되도록 만드는 과정

        x_scaled = min_max_scalar.fit_transform(x.astype(float))

        # 정규화(normalization)
        # 많은 양의 데이터를 처리함에 있어 여러 이유로 정규화,
        # 즉 데이터의 범위를 일치시키거나 분포를 유사하게 만들어주는 등의 작업
        # 평균값 정규화, 중간값 정규화.....

        police_norm = pd.DataFrame(x_scaled,
                                   columns=crime_columns,
                                   index=police.index)
        police_norm[crime_rate_columns] = police[crime_rate_columns]
        self.dr.context = './saved_data'
        self.dr.fname = '/cctv_pop.csv'
        cctv_pop = pd.read_csv(self.dr.new_file(), encoding='UTF-8', sep=',', index_col='구별')
        police_norm['범죄'] = np.sum(police_norm[crime_rate_columns], axis=1)
        police_norm['검거'] = np.sum(police_norm[crime_columns], axis=1)
        print(police_norm.columns)
        police_norm.to_csv('./saved_data/police_norm.csv')
Example #2
0
class PoliceNormModel:
    def __init__(self):
        self.dr = DataReader()

    def hook(self):
        print("---------- 1.cctv 파일로 df 생성")
        self.create_crime_rate()

    def create_crime_rate(self):
        self.dr.context = "./saved_data"
        self.dr.fname = "/crime_police.csv"
        police_crime = self.dr.csv_dframe()
        police = pd.pivot_table(police_crime, index="구별", aggfunc=np.sum)
        print(police.columns)
        police["살인검거율"] = (police["살인 검거"] / police["살인 발생"]) * 100
        police["강도검거율"] = (police["강도 검거"] / police["강도 발생"]) * 100
        police["강간검거율"] = (police["강간 검거"] / police["강간 발생"]) * 100
        police["절도검거율"] = (police["절도 검거"] / police["절도 발생"]) * 100
        police["폭력검거율"] = (police["폭력 검거"] / police["폭력 발생"]) * 100
        #axis=1 -> 컬럼 단위로 삭제(세로)
        police.drop(columns={"살인 검거", "강도 검거", "강간 검거", "절도 검거", "폭력 검거"},
                    axis=1)
        crime_rate_columns = ["살인검거율", "강도검거율", "강간검거율", "절도검거율", "폭력검거율"]
        for i in crime_rate_columns:
            police.loc[police[i] > 100,
                       1] = 100  #100%가 넘어가는 경우 에러가 발생 -> 방지하기 위한 로직 100으로 치환
        police.rename(columns={
            "살인 발생": "살인",
            "강도 발생": "강도",
            "강간 발생": "강간",
            "절도 발생": "절도",
            "폭력 발생": "폭력"
        },
                      inplace=True)

        crime_columns = ["살인", "강도", "강간", "절도", "폭력"]

        x = police[crime_rate_columns].values
        #scaler ->
        #return은 반드시 스칼라가 되어야 한다.
        min_max_scalar = preprocessing.MinMaxScaler()
        """
        스케일링은 선형변환을 적용하여
        전체 자료의 분포를 평균 0, 분산 1이 되도록 만드는 과정        
        """

        x_scaled = min_max_scalar.fit_transform(x.astype(float))
        """
        정규화(normalization)
        많은 양의 데이터를 처리함에 있어 여러 이유로 정규화.     
        즉, 데이터의 범위를 일치시키거나
        분포를 유사하게 만들어 주는 등의 작업,.
        평균값 정규화, 중간값 정규화...
        """

        police_norm = pd.DataFrame(x_scaled,
                                   columns=crime_columns,
                                   index=police.index)
        police_norm[crime_rate_columns] = police[crime_rate_columns]
        self.dr.context = "./saved_data"
        self.dr.fname = "/cctv_pop.csv"
        cctv_pop = pd.read_csv(self.dr.new_file(),
                               encoding="UTF-8",
                               sep=",",
                               index_col="구 별")
        police_norm["범죄"] = np.sum(police_norm[crime_rate_columns], axis=1)
        police_norm["검거"] = np.sum(police_norm[crime_columns], axis=1)

        print(police_norm.columns)

        police_norm.to_csv("./saved_data/police_nomr.csv",
                           sep=",",
                           encoding="UTF-8")
class PoliceNmlModel:
    def __init__(self):
        self.dr = DataReader()

    def hook(self):
        print('-' * 12, '1, 생성', '-' * 12)
        self.create_crime_rate()

    def create_crime_rate(self):
        self.dr.context = './saved_data/'
        self.dr.fname = './crime_police.csv'
        police_crime = self.dr.csv_to_dframe()
        police = pd.pivot_table(police_crime, index='구별', aggfunc=np.sum)
        # print(police.columns)
        police['성인검거율'] = (police['살인 검거'] / police['살인 발생']) * 100
        police['강도검거율'] = (police['강도 검거'] / police['강도 발생']) * 100
        police['강간검거율'] = (police['강간 검거'] / police['강간 발생']) * 100
        police['절도검거율'] = (police['절도 검거'] / police['절도 발생']) * 100
        police['폭력검거율'] = (police['폭력 검거'] / police['폭력 발생']) * 100
        police.drop(columns={'살인 검거', '강도 검거', '강간 검거', '절도 검거', '폭력 검거'},
                    axis=1)
        crime_rate_columns = ['성인검거율', '강도검거율', '강간검거율', '절도검거율', '폭력검거율']
        for i in crime_rate_columns:
            police.loc[police[i] > 100,
                       1] = 100  # 데이터값의 기간 오류로 100이 넘으면 100으로 계산
        police.rename(columns={
            '살인 발생': '살인',
            '강도 발생': '강도',
            '강간 발생': '강간',
            '절도 발생': '절도',
            '폭력 발생': '폭력'
        },
                      inplace=True)
        crime_columns = ['살인', '강도', '강간', '절도', '폭력']

        x = police[crime_rate_columns].values

        min_max_scalar = preprocessing.MinMaxScaler()

        x_scaled = min_max_scalar.fit_transform(x.astype(float))
        # normalizaion
        # 분포를 유사하게
        # 평균값 정규화, 중간값 정규화 .. etc

        police_norm = pd.DataFrame(
            x_scaled,
            columns=crime_columns,
            index=police.index,
        )
        police_norm[crime_rate_columns] = police[crime_rate_columns]
        self.dr.context = './saved_data'
        self.dr.fname = '/cctv_pop.csv'
        cctv_pop = pd.read_csv(self.dr.new_file(),
                               encoding='utf-8',
                               sep=',',
                               index_col='구별')
        police_norm['범죄'] = np.sum(police_norm[crime_rate_columns], axis=1)
        police_norm['검거'] = np.sum(police_norm[crime_columns], axis=1)
        print(police_norm.columns)
        police_norm.to_csv('./saved_data/police_norm.csv',
                           sep=',',
                           encoding='utf-8')
Example #4
0
class PoliceNormModel:
    def __init__(self):
        self.dr = DataReader()

    def hook_process(self):
        print('----------------1.crime 파일로 DF 생성---------------')
        self.create_crime_rate()

    def create_crime_rate(self):
        self.dr.context = './saved_data/'
        self.dr.fname = 'crime_police.csv'
        police_crime = self.dr.csv_to_dframe()
        police = pd.pivot_table(police_crime, index='구별', aggfunc=np.sum)
        print(police.columns)
        police['살인검거율'] = (police['살인 검거'] / police['살인 발생']) * 100
        police['강도검거율'] = (police['강도 검거'] / police['강도 발생']) * 100
        police['강간검거율'] = (police['강간 검거'] / police['강간 발생']) * 100
        police['절도검거율'] = (police['절도 검거'] / police['절도 발생']) * 100
        police['폭력검거율'] = (police['폭력 검거'] / police['폭력 발생']) * 100
        police.drop(columns={'강간 검거', '강도 검거', '살인 검거', '절도 검거', '폭력 검거'},
                    axis=1)
        crime_rate_columns = ['살인검거율', '강도검거율', '강간검거율', '절도검거율', '폭력검거율']
        for i in crime_rate_columns:
            police.loc[police[i] > 100,
                       1] = 100  # 데이타 값에 오류로 100이 넘으면 100으로 계산

        police.rename(columns={
            '살인 발생': '살인',
            '강도 발생': '강도',
            '강간 발생': '강간',
            '절도 발생': '절도',
            '폭력 발생': '폭력'
        },
                      inplace=True)

        crime_columns = ['살인', '강도', '강간', '절도', '폭력']

        x = police[crime_rate_columns].values

        min_max_scalar = preprocessing.MinMaxScaler()
        '''
        스케일링은 선형변환을 적응하여 전체 자료의 분포를 평균 0 ,분산 1이 되도록 만드는 과정
        
        '''
        x_scaled = min_max_scalar.fit_transform(x.astype(float))
        '''
        정규화
        많은 양의 데이타를 처리함에 있어 여러 이유로 정규화, 즉 데이타의 범위를 일치시키거나 분포를 유사하게 만들어주는 등의 작업
        평균값 정규화,증간값 정규화
        
        '''
        police_norm = pd.DataFrame(x_scaled,
                                   columns=crime_columns,
                                   index=police.index)
        police_norm[crime_rate_columns] = police[crime_rate_columns]
        self.dr.context = './saved_data/'
        self.dr.fname = 'cctv_pop.csv'
        cctv_pop = pd.read_csv(self.dr.new_file(),
                               encoding='UTF-8',
                               sep=',',
                               index_col='구별')
        police_norm['범죄'] = np.sum(police_norm[crime_rate_columns], axis=1)
        police_norm['검거'] = np.sum(police_norm[crime_columns], axis=1)

        print(police_norm.columns)

        police_norm.to_csv('./saved_data/police_norm.csv',
                           sep=',',
                           encoding='UTF-8')