ホームページ  >  記事  >  バックエンド開発  >  Python での時系列分類の例

Python での時系列分類の例

WBOY
WBOYオリジナル
2023-06-10 11:58:441897ブラウズ

Python は現在最も人気のあるプログラミング言語の 1 つであり、その強力で柔軟な機能により、データ サイエンスと機械学習の分野で選ばれる言語となっています。時系列は、株価や天候の変化などの時間順のデータを記述するために使用できるため、データ分析において非常に重要な概念です。

この記事では、Python を使用して時系列データを分類する方法を検討します。

  1. データの準備

まず、分類用のデータを準備する必要があります。この例では、UCI Machine Learning Repository のデータセットを使用します。これには、それぞれ 24 時間の気象データで構成される 1000 日の時系列が含まれています。このデータセットは、翌日の最低気温が特定のしきい値を下回るかどうかを予測することを目的としています。

パンダ ライブラリを使用してデータセットを読み込みます。

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. 特徴エンジニアリング

分類の前に、データを前処理する必要があります。ステップの 1 つは特徴エンジニアリングです。ここでは、モデルのパフォーマンスを向上させるために元のデータから新しい特徴を抽出する必要があります。

時系列から次の特徴を抽出できます:

  • 平均
  • 分散
  • 最大値
  • 最小値
  • 中央値
  • 標準偏差

パンダを使用すると、これらの特徴をすばやく抽出できます。

# 提取以下特征
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% でした。これは、最低温度が事前定義されたしきい値を下回るかどうかをモデルが非常に正確に予測したことを意味します。

    #結論
Python では、時系列分類子を使用すると、時系列データの分類が非常に簡単になります。この記事では、LightGBM モデルを使用して時系列データを分類し、pandas ライブラリを使用してデータを前処理して特徴を抽出します。

株価予測、気象変化予測、またはその他の時系列タスクに取り組んでいる場合でも、これらのツールとテクニックは、データ分析と予測をより適切に実行するのに役立ちます。

以上がPython での時系列分類の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。