Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh klasifikasi siri masa dalam Python

Contoh klasifikasi siri masa dalam Python

WBOY
WBOYasal
2023-06-10 11:58:441932semak imbas

Python merupakan salah satu bahasa pengaturcaraan yang paling popular pada masa ini. Ciri yang berkuasa dan fleksibel menjadikannya bahasa pilihan dalam bidang sains data dan pembelajaran mesin. Dalam analisis data, siri masa adalah konsep yang sangat penting kerana ia boleh digunakan untuk menerangkan data tertib masa, seperti harga saham, perubahan cuaca, dll.

Dalam artikel ini, kami akan meneroka cara mengklasifikasikan data siri masa menggunakan Python.

  1. Penyediaan data

Pertama, kita perlu menyediakan data untuk pengelasan. Dalam contoh ini, kami akan menggunakan set data daripada Repositori Pembelajaran Mesin UCI, yang mengandungi siri masa 1000 hari, setiap satu terdiri daripada 24 jam data meteorologi. Set data ini bertujuan untuk meramalkan sama ada suhu minimum hari berikutnya akan jatuh di bawah ambang tertentu.

Kami akan menggunakan pustaka panda untuk memuatkan set data.

import pandas as pd

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

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

Output:

      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

Seperti yang kita lihat, set data mengandungi maklumat seperti tarikh, data cuaca 24 jam dan suhu minimum (Tmin).

  1. Kejuruteraan Ciri

Sebelum pengelasan, kita perlu praproses data. Salah satu langkah ialah kejuruteraan ciri, di mana kita perlu mengekstrak ciri baharu daripada data asal untuk meningkatkan prestasi model.

Kami boleh mengekstrak ciri berikut daripada siri masa:

  • Min
  • Variance
  • Maksimum
  • Minimum
  • Nilai median
  • Sisihan piawai

Kita boleh menggunakan panda untuk mengekstrak ciri ini dengan cepat.

# 提取以下特征
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())

Output:

      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

Kini kami telah berjaya mengekstrak beberapa ciri baharu daripada siri masa, yang akan memberikan lebih banyak maklumat kepada pengelas kami.

  1. Pembahagian Data

Seterusnya, kita perlu membahagikan set data kepada set latihan dan set ujian. Kami akan menggunakan perpustakaan scikit-learn untuk menyelesaikan tugasan ini.

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)

Di sini kami membahagikan set data kepada set latihan 80% dan set ujian 20%.

  1. Klasifikasi Siri Masa

Kini, kami bersedia untuk mengelaskan data menggunakan pengelas siri masa. Dalam contoh ini kita akan menggunakan model 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))

Output:

Accuracy: 94.50%

Kami mendapat ketepatan 94.5%, yang bermaksud model kami meramalkan dengan sangat tepat sama ada suhu minimum berada di bawah ambang yang telah ditetapkan.

  1. Kesimpulan

Mengelaskan data siri masa telah menjadi sangat mudah dalam Python menggunakan pengelas siri masa. Dalam artikel ini, kami menggunakan model LightGBM untuk mengklasifikasikan data siri masa dan menggunakan pustaka panda untuk mempraproses data dan mengekstrak ciri.

Sama ada anda bekerja dalam ramalan harga saham, ramalan perubahan cuaca atau tugasan siri masa yang lain, alatan dan teknik ini boleh membantu anda melaksanakan analisis dan ramalan data dengan lebih baik.

Atas ialah kandungan terperinci Contoh klasifikasi siri masa dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn