728x90
Selecting Data for Modeling

Selecting Data for Modeling

  • 여러분의 데이터셋의 변수는 머릿속으로만 생각하거나, 멋지게 출력하기에는 너무 많이 있습니다. 어떻게 이해하기에 과도한 양의 데이터를 줄일 수 있을까요?
  • 우리의 직관을 이용하여 몇 가지 변수를 고르는 것으로 시작해봅시다. 나중의 수업에서는 변수의 우선 순위를 자동으로 매기는 통계학적 기술에 대해 알아볼 것입니다.
  • 변수/열을 선택하기 위해, 우리는 데이터셋의 모든 열을 볼 필요가 있습니다. DataFrame의 Column 특성을 통해 알 수 있습니다(아래에 코드가 있습니다.)
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv' melbourne_data = pd.read_csv(melbourne_file_path) melbourne_data.columns
Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG', 'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car', 'Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude', 'Longtitude', 'Regionname', 'Propertycount'], dtype='object')
# The Melbourne data has some missing values (some houses for which some variables weren't recorded.) # We'll learn to handle missing values in a later tutorial. # Your Iowa data doesn't have missing values in the columns you use. # So we will take the simplest option for now, and drop houses from our data. # Don't worry about this much for now, though the code is: # dropna drops missing values (think of na as "not available") melbourne_data = melbourne_data.dropna(axis=0)
  • 데이터의 하위 집합(subset)을 선택하기 위한 여러 가지 방법이 있습니다. Pandas Micro-course는 이런 것들을 더 깊이 다루지만, 우리는 두 가지 접근법에 집중해볼 것입니다.
  1. "예측 타겟"을 선택하는, Dot notation
  2. "특징"을 선택하는, Column list 선택

Selecting The Prediction Target

  • 여러분은 dot-notation으로 변수를 추출할 수 있습니다. 이 하나의 열은 일럴로 저장되며, 1개 열을 갖는 DataFrame과 유사합니다.
  • 우리는 Prediction target이라고 하는, 예측하고자 하는 열을 선택할 때 dot notation을 사용할 것입니다. 편의를 위해, prediction target은 y라고 부릅니다. 그렇기 때문에 멜버른의 데이타에서 집값을 저장하기 위한 코드는 다음과 같습니다.
y = melbourne_data.Price

Choosing "Features"

  • 우리의 모델(나중에는 예측에 사용될)에 입력된 열은 "특성(features)"라고 불립니다. 이 경우, 집값을 판단하기 위해 사용되는 열이 될 것입니다. 때때로, 여러분은 타겟을 제외한 모든 열을 특성으로 활용할 것입니다. 다른 경우 더 적은 특성을 이용하는 것이 더 나을 것입니다.
  • 이번에는, 우리는 몇 가지 특성을 이용하여 모델을 구성할 것입니다. 나중에 어떻게 다른 특성을 갖는 모델을 순회하고 비교하는지에 대해 배우게 될 것입니다.
  • 우리는 브래킷 내에 제공되어 있는 열 이름을 특성으로 선택합니다. 이 리스트 내의 각 아이템은 문자열로 되어 있습니다.
  • 예시는 다음과 같습니다:
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
  • 편의를 위해, 이 데이터를 X라고 부릅니다.
X = melbourne_data[melbourne_features]
  • 가장 위의 몇 개의 열을 보여주는 describe 메소드와 head 메소드를 이용해서 집값을 예측하기 위해 데이터를 빠르게 확인해봅시다.
X.describe() X.head()
  • 이 명령어로 시각적으로 데이터를 확인하는 것은 데이터 사이언티스트들의 중요한 업무 중 일부입니다. 여러분은 더 많은 직관을 제공하는 데이터셋에 종종 놀라게 될 것입니다.

Building Your Model

  • 여러분은 모델을 만들기 위해 scikit-learn 라이브러리를 사용하게 될 것입니다. 코딩할 때, 샘플 코드에서 볼 수 있듯 종종 sklearn라고도 쓰입니다. Scikit-learn은 보통 Dataframe에 저장된 데이터들을 모델링하는데 가장 유명한 라이브러리입니다.
  • 모델을 구성하고 사용하는 단계는 다음과 같습니다:
    • 정의 : 어떠한 모델이 될 것인가? 결정 트리? 다른 형태의 모델인지? 모델 타입의 다른 몇몇 파라미터들 역시 명시되어야 합니다.
    • 피팅 : 제공된 데이터에서 패턴을 확인합니다. 이것이 모델링의 핵심입니다.
    • 예측 : 말 그대로의 의미입니다.
    • 가치 판단 : 얼마나 모델이 정확한지 판단합니다.
  • 여기 scikit-learn을 이용한 결정 트리 모델과 특성과 타겟 변수를 이용한 예시가 있습니다.
# Define model. Specify a number for random_state to ensure same results each run melbourne_model = DecisionTreeRegressor(random_state=1)
# Fit model melbourne_model.fit(X, y) DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=1, splitter='best')
  • 많은 머신 러닝 모델들은 모델 학습에 임의성을 이용합니다. random_state로 숫자를 명시하는 것은 여러분이 각 단계마다 같은 결과를 얻도록 합니다. 이는 좋은 시도일 수 있습니다. 어떠한 숫자를 사용하면, 모델의 질은 어떠한 값을 고르더라도 의미 있게 관련되지는 않을 것입니다.
  • 우리는 이제 결정을 할 수 있는 피팅된 모델을 갖고 있습니다.
  • 실제로, 여러분은 우리가 가격을 이미 알고 있는 집보다는 시장에 나타나는 새로운 집에 대해 결정을 내리고자 할 것입니다.하지만 우리는 얼마나 예측 함수가 잘 동작하는지 보기 위해 처음의 몇 개 열에 대해 결정을 내릴 것입니다.
print("Making predictions for the following 5 houses:") print(X.head()) print("The predictions are") print(melbourne_model.predict(X.head()))
Making predictions for the following 5 houses: Rooms Bathroom Landsize Lattitude Longtitude 1 2 1.0 156.0 -37.8079 144.9934 2 3 2.0 134.0 -37.8093 144.9944 4 4 1.0 120.0 -37.8072 144.9941 6 3 2.0 245.0 -37.8024 144.9993 7 2 1.0 256.0 -37.8060 144.9954 The predictions are [1035000. 1465000. 1600000. 1876000. 1636000.]
728x90

+ Recent posts