[DAY6]_개발일지: 데이터 전처리1

hanseungjune·2022년 4월 11일
0

DaeguAI

목록 보기
1/15
post-thumbnail

1. 기본환경 : Google Colab or Jupyter

1. 학습내용

  1. Processing

자세한 내용!

2. 주요코드


  • 기본 환경설정
  • # 먼저 필요한 패키지를 가져옵니다.
    
    import numpy as np
    import pandas as pd
    import sklearn
    import matplotlib.pyplot as plt입력하세요
    !pip install imblearn #설치 필수


  • data 변수에 값 넣기(배열 후, 값에 라벨붙이기)
  • abalone_columns = list()
    for l in open('abalone_attributes.txt'):
      abalone_columns.append(l.strip())
    
    data = pd.read_csv('abalone.txt', header = None,  names = abalone_columns )
    
    label = data['Sex']

  • MinMax (범위 : 0 ~ 1)
  • data = (data - np.min(data)) / (np.max(data) - np.min(data)) #Min-Max 스켈링

  • MinMax스켈링
  • from sklearn.preprocessing import MinMaxScaler
    
    mMscaler = MinMaxScaler()
    
    mMscaled_data = mMscaler.fit_transform(data)
    

  • Standard스켈링
  • from sklearn.preprocessing import StandardScaler
    
    sdscaler = StandardScaler()
    
    sdscaled_data = sdscaler.fit_transform(data)

  • Over&Under 샘플링
  • from imblearn.over_sampling import RandomOverSampler
    from imblearn.under_sampling import RandomUnderSampler
    
    ros = RandomOverSampler()
    rus = RandomUnderSampler()
    
    <!-- OVER -->
    oversampled_data, oversampled_label = ros.fit_resample(data, label)
    oversampled_data = pd.DataFrame(oversampled_data, columns=data.columns)
    
    <!-- UNDER -->
    undersampled_data, undersampled_label = rus.fit_resample(data, label)

  • SMOTE 적용전
  • from sklearn.datasets import make_classification
    data, label = make_classification(
        n_samples = 1000,
        n_classes=3,
        n_features=2,
        n_repeated=0,
        n_informative=2,
        n_redundant=0,
        n_clusters_per_class=1,
        weights=[0.05, 0.15, 0.8],
        class_sep=1,
        random_state=2022
        
        <!-- 그림으로 나타내는 코드 -->
        plt.scatter(data[:,0],data[:,1], c=label, linewidth=1, edgecolor='black')
    )


  • SMOTE 적용후
  • from imblearn.over_sampling import SMOTE
    smote = SMOTE(k_neighbors=5)
    
    smoted_data, smoted_label = smote.fit_resample(data, label)
    
    print('원본 데이터의 클래스 비율 \n{}'.format(pd.get_dummies(label).sum()))
    print('\nSMOTE 결과 \n{}'.format(pd.get_dummies(smoted_label).sum()))
    
        <!-- 그림으로 나타내는 코드 -->
    plt.scatter(smoted_data[:,0], smoted_data[:,1],
                c=smoted_label, linewidth=1, edgecolor='black'
    )

  • 차원축소 전
  • from sklearn.datasets import load_digits
    
    digits = load_digits()
    
    data = digits.data
    label = digits.target
    
        <!-- 그림으로 나타내는 코드 -->
    plt.imshow(data[0].reshape(8,8))
    print('Label : {}'.format(label[0]))
    

  • 차원축소 후
  • from sklearn.decomposition import PCA
    pca = PCA(n_components=2)
    
    new_data = pca.fit_transform(data)
    
        <!-- 그림으로 나타내는 코드 -->
    plt.scatter(new_data[:,0], new_data[:,1], c=label, linewidth=1, edgecolor ='black')

  • 범주형 데이터 수치화-Label Encoding
  • data = pd.read_csv('abalone.txt', header=None, names = abalone_columns)
    
    from sklearn.preprocessing import LabelEncoder
    le = LabelEncoder()
    
    # 가로로 정리
    label_encoded_label = le.fit_transform(label)
    
    # 세로로 정리
    label_encoded_label.reshape(-1,1)
    
    #판다스 형태로 변환(보기좋음)
    result = pd.DataFrame(data = np.concatenate([label.values.reshape((-1,1)),label_encoded_label.reshape((-1, 1))], axis=1),columns=['label', 'label_encoded'])
    

  • 범주형 데이터 수치화-OneHot Encoding
  • from sklearn.preprocessing import OneHotEncoder
    ohe = OneHotEncoder(sparse=False)   #True(디폴트)는 매트릭스, False는 배열로 나옴
    
    one_hot_encoded = ohe.fit_transform(label.values.reshape((-1,1)))
    
    print(one_hot_encoded) #확인용(안해도됨)
    

  • 범주형 데이터 수치화-OneHot Encoding
  • from sklearn.datasets import load_wine
    wine = load_wine()
    
    print(wine.DESCR)	#확인용(안해도됨)
    
    data = wine.data
    label = wine.target
    columns = wine.feature_names
    
    data = pd.DataFrame(data, columns = columns)
    
    data.head() 	#확인용(안해도됨)

  • K-Means Clustering
  • #3개 군집정도 생각하고 kmeans 알고리즘 적용
    from sklearn.cluster import KMeans
    kmeans = KMeans(n_clusters=3)
    
    #데이터 적용
    kmeans.fit(data)
    
    #군집에 데이터 알고리즘 적용시킨값 넣기
    cluster = kmeans.predict(data)
    
    #그림으로 표현
    plt.scatter(data[:,0],data[:,1], c=cluster,
                lineWidth=1, edgecolor='black')
    


    3. 실습

    1. 데이터 정리
    2. MinMax 스켈링
    3. PCA 축소

    a. 데이터 정리

    from sklearn.datasets import load_wine
    wine = load_wine()
    
    print(wine.DESCR) #확인
    
    data = wine.data
    label = wine.target
    columns = wine.feature_names
    
    data = pd.DataFrame(data, columns = columns)
    
    data.head() #확인
    data.shape	#확인
    

    b. MinMax 스켈링

    #MinMax
    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    data = scaler.fit_transform(data)
    
    data #확인
    

    c. PCA 축소

    from sklearn.decomposition import PCA
    pca = PCA(n_components=2)
    data = pca.fit_transform(data)

    4. 금일소감

    <ol>
    	<li>추가 모집 이후 첫 수업</li>
    	<li>인공지능 겁나 어려움</li>
    	<li>프론트엔드 공부는 따로 해야할 듯</li>
    </ol>
    profile
    필요하다면 공부하는 개발자, 한승준

    0개의 댓글

    관련 채용 정보