Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Python untuk analisis siri masa: ramalan dan pengesanan anomali

Python untuk analisis siri masa: ramalan dan pengesanan anomali

PHPz
PHPzke hadapan
2023-08-31 20:09:131175semak imbas

Python untuk analisis siri masa: ramalan dan pengesanan anomali

Python telah menjadi bahasa pilihan untuk saintis data dan penganalisis, menawarkan rangkaian komprehensif perpustakaan dan alatan analisis data. Khususnya, Python cemerlang dalam analisis siri masa dan cemerlang dalam ramalan dan pengesanan anomali. Dengan kesederhanaan, fleksibiliti dan sokongan yang kuat untuk teknik statistik dan pembelajaran mesin, Python menyediakan platform yang ideal untuk mengekstrak cerapan berharga daripada data yang bergantung kepada masa.

Artikel ini meneroka keupayaan unggul Python untuk analisis siri masa, memfokuskan pada ramalan dan pengesanan anomali. Dengan menyelidiki aspek praktikal tugasan ini, kami menyerlahkan cara perpustakaan dan alatan Python mendayakan ramalan yang tepat dan mengenal pasti anomali dalam data siri masa. Melalui contoh dunia sebenar dan output demonstratif, kami menunjukkan kecekapan dan utiliti Python dalam menyelesaikan cabaran analisis siri masa. Sertai kami dalam perjalanan Python untuk melakukan analisis siri masa dan menemui khazanah tersembunyi dalam data berkaitan masa.

Gunakan Python untuk ramalan

Ramalan membolehkan kita meramal nilai masa depan berdasarkan pemerhatian lepas. Python menyediakan beberapa perpustakaan berprestasi tinggi seperti NumPy, panda, dan scikit-lear yang memudahkan peramalan siri masa. Di samping itu, model statistik dan perpustakaan khusus seperti Nabi menyediakan keupayaan ramalan yang lebih maju.

Dalam tugas meramalkan jualan kedai runcit untuk bulan depan, kami mula-mula memuatkan data siri masa ke dalam DataFrame panda dan melakukan kerja penyediaan yang diperlukan. Setelah data sedia, kami boleh meneroka pelbagai kaedah ramalan seperti purata bergerak, pelicinan eksponen dan model ARIMA untuk analisis dan ramalan.

Contoh

Berikut ialah kod sampel

import pandas as pd
import statsmodels.api as sm

# Load and preprocess the time series data
sales_data = pd.read_csv('sales_data.csv', parse_dates=['Date'])
sales_data.set_index('Date', inplace=True)

# Fit the ARIMA model
model = sm.tsa.ARIMA(sales_data, order=(1, 1, 1))
model_fit = model.fit(disp=0)

# Make predictions
predictions = model_fit.predict(start='2023-07-01', end='2023-08-01', dynamic=False)

Dalam contoh ini, kami memuatkan data jualan daripada fail CSV, menetapkan lajur tarikh sebagai indeks dan menyesuaikan model ARIMA(1, 1, 1) pada data. Akhirnya, kami membuat ramalan kami untuk bulan hadapan.

Menggunakan Python untuk pengesanan anomali

Pengesanan anomali melibatkan mengenal pasti corak luar biasa dalam data siri masa. Python menyediakan pelbagai teknik dan perpustakaan untuk pengesanan anomali yang berkesan, termasuk kaedah popular berdasarkan purata bergerak dan sisihan piawai.

Andaikan kita mempunyai set data penderia yang mengandungi bacaan suhu setiap jam. Kami sedang mencari pengecualian, seperti peningkatan atau penurunan suhu yang cepat. Berikut ialah contoh kod menggunakan purata bergerak dan strategi sisihan piawai

Contoh

import pandas as pd

# Load the time series data
sensor_data = pd.read_csv('sensor_data.csv', parse_dates=['Timestamp'])
sensor_data.set_index('Timestamp', inplace=True)

# Calculate moving averages and standard deviations
window_size = 6
rolling_mean = sensor_data['Temperature'].rolling(window=window_size).mean()
rolling_std = sensor_data['Temperature'].rolling(window=window_size).std()

# Detect anomalies
anomalies = sensor_data[(sensor_data['Temperature'] > rolling_mean + 2 * rolling_std) |
                        (sensor_data['Temperature'] < rolling_mean - 2 * rolling_std)]

Dalam contoh ini, kami menggunakan saiz tetingkap 6 jam untuk mengira purata bergerak dan sisihan piawai pengukuran suhu. Kami kemudiannya dapat mengesan anomali dengan mencari titik data yang menyimpang dengan ketara daripada purata bergerak.

Visualisasi Python untuk Analisis Siri Masa

Python menyediakan perpustakaan visualisasi yang berkuasa yang meningkatkan pemahaman kami tentang data siri masa, di luar ramalan dan pengesanan anomali. Visualisasi membantu mengenal pasti corak, arah aliran dan anomali secara visual untuk meningkatkan cerapan dan membuat keputusan termaklum.

Mari panjangkan contoh sebelumnya dan menggabungkan keupayaan visualisasi Python untuk mendapatkan pemahaman yang lebih mendalam tentang data.

Visualisasi Ramalan

Selepas menggunakan model ARIMA untuk ramalan jualan, kami boleh memaparkan jualan yang dijangkakan bersama-sama dengan data jualan sebenar. Gunakan visualisasi ini untuk membandingkan nombor yang dijangka dan sebenar dengan mudah.

Contoh

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.plot(sales_data.index, sales_data['Sales'], label='Actual Sales')
plt.plot(predictions.index, predictions, color='red', linestyle='--', label='Predicted Sales')
plt.title('Sales Forecasting')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.legend()
plt.show()

Dalam contoh ini, perpustakaan matplotlib digunakan untuk menjana graf garisan untuk mewakili secara visual data jualan sebenar dan ramalan. Perwakilan grafik ini membolehkan kami menilai ketepatan model ramalan dan mengenal pasti sebarang perbezaan antara nilai yang diramalkan dan yang diperhatikan.

Visualisasi pengesanan anomali

Visualisasi pengesanan anomali memerlukan mencipta carta untuk memaparkan data siri masa, mengira purata bergerak dan anomali yang dikesan. Perwakilan visual ini membolehkan pengenalpastian dan analisis yang jelas bagi titik data yang tidak normal. Ini adalah contoh

contoh

import pandas as pd
import matplotlib.pyplot as plt

sensor_data = pd.read_csv('sensor_data.csv', parse_dates=['Timestamp'])
sensor_data.set_index('Timestamp', inplace=True)

window_size = 6
rolling_mean = sensor_data['Temperature'].rolling(window=window_size).mean()
rolling_std = sensor_data['Temperature'].rolling(window=window_size).std()

anomalies = sensor_data[(sensor_data['Temperature'] > rolling_mean + 2 * rolling_std) |
                        (sensor_data['Temperature'] < rolling_mean - 2 * rolling_std)]

plt.figure(figsize=(10, 6))
plt.plot(sensor_data.index, sensor_data['Temperature'], label='Temperature')
plt.plot(sensor_data.index, rolling_mean, color='red', linestyle='--', label='Moving Average')
plt.scatter(anomalies.index, anomalies['Temperature'], color='orange', label='Anomalies')
plt.title('Anomaly Detection: Temperature Sensor')
plt.xlabel('Timestamp')
plt.ylabel('Temperature')
plt.legend()
plt.show()

Contoh kod ini memuatkan data siri masa daripada fail CSV dan menetapkan lajur cap masa sebagai indeks. Ia kemudian mengira purata bergerak dan sisihan piawai bacaan suhu menggunakan saiz tetingkap tertentu. Anomali boleh dikesan dengan membandingkan nilai suhu dengan purata bergerak yang dikira dan sisihan piawai.

KESIMPULAN

Secara keseluruhannya, Python terbukti sebagai alat yang berharga untuk analisis siri masa, terutamanya dalam bidang ramalan dan pengesanan anomali. Pustakanya yang luas, termasuk statsmodels, panda, dan scikit-learn, menyediakan ekosistem berkuasa yang disesuaikan untuk bekerja dengan data siri masa. Dengan memanfaatkan kuasa perpustakaan ini, model ramalan yang tepat seperti ARIMA boleh dibina dan teknik seperti purata bergerak dan sisihan piawai boleh digunakan untuk mengenal pasti anomali. Selain itu, perpustakaan visualisasi Python, seperti matplotlib, membolehkan pengguna mencipta plot yang menarik secara visual yang memperdalam pemahaman mereka tentang data siri masa. Tanpa mengira tahap kepakaran, Python menyediakan sumber yang diperlukan kepada pemula dan saintis data berpengalaman untuk mengesan arah aliran, membuat ramalan yang tepat dan mengenal pasti anomali dalam set data siri masa.

Atas ialah kandungan terperinci Python untuk analisis siri masa: ramalan dan pengesanan anomali. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam