>  기사  >  백엔드 개발  >  Python의 시계열 분류 예

Python의 시계열 분류 예

WBOY
WBOY원래의
2023-06-10 11:58:441894검색

Python은 현재 가장 인기 있는 프로그래밍 언어 중 하나이며, 강력하고 유연한 기능으로 인해 데이터 과학 및 기계 학습 분야에서 선택되는 언어입니다. 데이터 분석에서 시계열은 주가, 날씨 변화 등 시간 순서에 따른 데이터를 설명하는 데 사용할 수 있기 때문에 매우 중요한 개념입니다.

이 기사에서는 Python을 사용하여 시계열 데이터를 분류하는 방법을 살펴보겠습니다.

  1. 데이터 준비

먼저 분류를 위한 데이터를 준비해야 합니다. 이 예에서는 각각 24시간의 기상 데이터로 구성된 1000일 시계열이 포함된 UCI Machine Learning Repository의 데이터 세트를 사용합니다. 이 데이터 세트는 다음날 최저 기온이 특정 임계값 아래로 떨어질지 여부를 예측하는 것을 목표로 합니다.

Pandas 라이브러리를 사용하여 데이터세트를 로드하겠습니다.

import pandas as pd

# 加载数据集
data = pd.read_csv("weather.csv")

# 查看前几行数据
print(data.head())

출력:

      Date  R1  R2  R3  R4  R5  R6  R7  R8  R9  ...  R15  R16  R17  R18  R19  R20  R21  R22  R23  R24  Tmin
0  1/01/14  58  41  67  63  44  50  46  52  64  ...   82   83   62   49   67   73   65   52   39   23    42
1  2/01/14  46  45  36  63  72  75  80  65  68  ...   74   73   52   43   36   47   19   16   13   15    26
2  3/01/14  48  37  39  45  74  75  76  66  45  ...   76   62   49   50   38   50   29   15   13   15    30
3  4/01/14  46  43  47  76  48  68  77  61  61  ...   24   28   39   33   26    3    4    6    0   10    50
4  5/01/14  49  42  58  74  70  47  68  59  43  ...   55   37   36   42   30   29   35   31   25   22    32

보시다시피 데이터 세트에는 날짜, 24시간 날씨 데이터, 최저 기온(Tmin)과 같은 정보가 포함되어 있습니다.

  1. Feature Engineering

분류 전에 데이터를 전처리해야 합니다. 단계 중 하나는 모델 성능을 향상시키기 위해 원본 데이터에서 새로운 기능을 추출해야 하는 기능 엔지니어링입니다.

시계열에서 다음 특징을 추출할 수 있습니다.

  • 평균
  • 분산
  • 최대
  • 최소
  • 중앙값
  • 표준편차

팬더를 사용하면 이러한 특징을 빠르게 추출할 수 있습니다.

# 提取以下特征
features = []
for i in range(1, 25):
    features.append("R"+str(i))
    
data['Mean'] = data[features].mean(axis=1)
data['Std'] = data[features].std(axis=1)
data['Min'] = data[features].min(axis=1)
data['Max'] = data[features].max(axis=1)
data['Median'] = data[features].median(axis=1)
data['Var'] = data[features].var(axis=1)

# 查看更新后的数据集
print(data.head())

출력:

      Date  R1  R2  R3  R4  R5  R6  R7  R8  R9  ...  R18  R19  R20  R21  R22  R23  R24  Tmin       Mean        Std  Min  Max  Median         Var
0  1/01/14  58  41  67  63  44  50  46  52  64  ...   49   67   73   65   52   39   23    42  55.166667  15.181057   23   83    54.5  230.456140
1  2/01/14  46  45  36  63  72  75  80  65  68  ...   43   36   47   19   16   13   15    26  47.125000  20.236742   13   80    45.5  410.114035
2  3/01/14  48  37  39  45  74  75  76  66  45  ...   50   38   50   29   15   13   15    30  47.208333  19.541905   13   76    44.5  382.149123
3  4/01/14  46  43  47  76  48  68  77  61  61  ...   33   26    3    4    6    0   10    50  36.750000  19.767969    0   77    42.5  390.350877
4  5/01/14  49  42  58  74  70  47  68  59  43  ...   42   30   29   35   31   25   22    32  45.666667  16.013175   22   74    43.5  256.508772

이제 시계열에서 몇 가지 새로운 특징을 성공적으로 추출했으며, 이는 분류자에게 더 많은 정보를 제공할 것입니다.

  1. 데이터 파티션

다음으로 데이터 세트를 훈련 세트와 테스트 세트로 나누어야 합니다. 이 작업을 수행하기 위해 scikit-learn 라이브러리를 사용할 것입니다.

from sklearn.model_selection import train_test_split

X = data.drop(['Date','Tmin'], axis=1)
y = data['Tmin']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

여기서는 데이터 세트를 80% 훈련 세트와 20% 테스트 세트로 나눕니다.

  1. 시계열 분류

이제 시계열 분류기를 사용하여 데이터를 분류할 준비가 되었습니다. 이 예에서는 LightGBM 모델을 사용합니다.

import lightgbm as lgb

# 创建LightGBM分类器
clf = lgb.LGBMClassifier()

# 训练模型
clf.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = clf.predict(X_test)

# 计算精度
accuracy = sum(y_pred == y_test) / len(y_test)
print("Accuracy: {:.2f}%".format(accuracy * 100))

출력:

Accuracy: 94.50%

94.5%의 정확도를 얻었습니다. 이는 모델이 최소 온도가 사전 정의된 임계값보다 낮은지 여부를 매우 정확하게 예측했음을 의미합니다.

  1. 결론

Python의 시계열 분류기를 사용하면 시계열 데이터를 분류하는 것이 매우 쉬워집니다. 이 기사에서는 LightGBM 모델을 사용하여 시계열 데이터를 분류하고, pandas 라이브러리를 사용하여 데이터를 전처리하고 특징을 추출합니다.

주가 예측, 날씨 변화 예측 또는 기타 시계열 작업 중 무엇을 하든 이러한 도구와 기술은 더 나은 데이터 분석 및 예측을 수행하는 데 도움이 될 수 있습니다.

위 내용은 Python의 시계열 분류 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.