Vorhersage: Zeitreihenvorhersage zukünftiger Ereignisse mit SVR-Modul

Ich möchte eine Zeitreihenvorhersage für zukünftige Ereignisse mit dem SVR-Modul von scikit-learn durchführen. Hier ist mein Quellcode Ich versuche zu arbeiten mit:

import csv import numpy as np from sklearn.svm import SVR import matplotlib.pyplot as plt plt.switch_backend('newbackend') seq_num=[] win=[] def get_data(filename): with open(filename, 'r') as csvfile: csvFileReader = csv.reader(csvfile) next(csvFileReader) # skipping column names for row in csvFileReader: seq_num.append(int(row[0]) win.append(int(row[6])) return def predict_win(X, y, x): win = np.reshape(X,(len(X), 1)) svr_lin = SVR(kernel= 'linear', C= 1e3) svr_poly = SVR(kernel= 'poly', C= 1e3, degree= 2) svr_rbf = SVR(kernel= 'rbf', C= 1e3, gamma= 0.1) svr_rbf.fit(X, y) svr_lin.fit(X, y) svr_poly.fit(X, y) plt.scatter(X, y, color= 'black', label= 'Data') plt.plot(y, svr_rbf.predict(X), color= 'red', label= 'RBF model') plt.plot(y,svr_lin.predict(X), color= 'green', label= 'Linear model') plt.plot(y,svr_poly.predict(X), color= 'blue', label= 'Polynomial model') plt.xlabel('X, other features') plt.ylabel('win') plt.title('Support Vector Regression') plt.legend() plt.show() return svr_rbf.predict(x)[0], svr_lin.predict(x)[0], svr_poly.predict(x)[0] get_data('net_data.csv') predicted_win = predict_win(X, y, 29) 

Mein Datensatz ist sehr riesig und so ist ein Teil meines csv-Datasets am Ende enthalten. Ich interessiere mich für die 7. Spalte. Ich wollte vorhersagen, wann die Werte in der 7. Spalte zunehmen oder wenn sie abnimmt. Ist es möglich, in die 7. Spalte NUR zu schauen und die Zeitreihenvorhersage zu machen? Jede Hilfe mit diesem wäre so sehr geschätzt? Vielen Dank!

 0.007804347,10.0.0.11:49438,10.0.12.12:5001,32,3796291040,3796277984,10,2147483647,28960,3034,29312 0.007856739,10.0.0.11:49438,10.0.12.12:5001,32,3796293936,3796278008,11,2147483647,29056,2999,29312 0.010605189,10.0.0.11:49438,10.0.12.12:5001,32,3796320000,3796291040,20,2147483647,55040,2969,29312 0.010850907,10.0.0.11:49438,10.0.12.12:5001,32,3796348960,3796305520,30,2147483647,84096,2946,29312 0.013598458,10.0.0.11:49438,10.0.12.12:5001,32,3796377920,3796320000,40,2147483647,113024,2951,29312 0.01368011,10.0.0.11:49438,10.0.12.12:5001,32,3796434392,3796348960,60,2147483647,170880,2956,29312 0.015104265,10.0.0.11:49438,10.0.12.12:5001,32,3796434392,3796363440,70,2147483647,199936,2940,29312 0.016406964,10.0.0.11:49438,10.0.12.12:5001,32,3796490864,3796377920,80,2147483647,220160,2943,29312 0.016465876,10.0.0.11:49438,10.0.12.12:5001,32,3796537200,3796432944,81,80,330240,2925,29312 0.018355321,10.0.0.11:49438,10.0.12.12:5001,32,3796547336,3796434392,81,80,333056,2914,29312 0.020171945,10.0.0.11:49438,10.0.12.12:5001,32,3796603808,3796490864,83,80,382336,2956,29312 0.237314523,10.0.0.11:49438,10.0.12.12:5001,32,3810417728,3809658976,529,396,1775360,7109,29312 0.237409075,10.0.0.11:49438,10.0.12.12:5001,44,3810417728,3809700968,530,397,1859328,7381,29312 0.237486647,10.0.0.11:49438,10.0.12.12:5001,44,3810417728,3809700968,371,371,1960704,7365,29312 0.237807596,10.0.0.11:49438,10.0.12.12:5001,44,3810417728,3809700968,371,371,1980928,7362,29312 0.237989588,10.0.0.11:49438,10.0.12.12:5001,44,3810417728,3809700968,371,371,1989632,7400,29312 0.259123971,10.0.0.11:49438,10.0.12.12:5001,32,3811590608,3811251776,261,260,2267648,5885,29312 0.259174008,10.0.0.11:49438,10.0.12.12:5001,32,3811655768,3811289424,261,260,2267648,5918,29312 0.262546461,10.0.0.11:49438,10.0.12.12:5001,32,3811720928,3811354584,261,260,2267648,5823,29312 

One Solution collect form web for “Vorhersage: Zeitreihenvorhersage zukünftiger Ereignisse mit SVR-Modul”

Ok, die svm-Funktion unten hat ein Problem:

Die zweite Zeile, win = ... ist unbenutzt und wird einen Fehler verursachen. Lösche es.

 def predict_win(X, y, x): win = np.reshape(X,(len(X), 1)) # <----This line svr_lin = SVR(kernel= 'linear', C= 1e3) svr_poly = SVR(kernel= 'poly', C= 1e3, degree= 2) svr_rbf = SVR(kernel= 'rbf', C= 1e3, gamma= 0.1) svr_rbf.fit(X, y) svr_lin.fit(X, y) svr_poly.fit(X, y) plt.scatter(X, y, color= 'black', label= 'Data') plt.plot(y, svr_rbf.predict(X), color= 'red', label= 'RBF model') plt.plot(y,svr_lin.predict(X), color= 'green', label= 'Linear model') plt.plot(y,svr_poly.predict(X), color= 'blue', label= 'Polynomial model') plt.xlabel('X, other features') plt.ylabel('win') plt.title('Support Vector Regression') plt.legend() plt.show() return svr_rbf.predict(x)[0], svr_lin.predict(x)[0], svr_poly.predict(x)[0] 

Zweitens weiß ich nicht, warum es eine ganze Funktion zum Lesen eines csv gibt. Ignoriere es und verwende Pandas. Hier ist ein Beispielcode, der funktioniert:

 from sklearn import svm import pandas as pd import numpy as np import matplotlib.pyplot as plt def predict_win(X,y,x): svr_lin = svm.SVR(kernel='linear',C=1e3) svr_poly = svm.SVR(kernel='poly',C=1e3, degree=2) svr_rbf = svm.SVR(kernel='rbf',C=1e3,gamma=0.1) svr_rbf.fit(X,y) svr_lin.fit(X,y) svr_poly.fit(X,y) plt.plot(y,svr_rbf.predict(X),color='red',label='RBF model') plt.plot(y,svr_lin.predict(X),color='green',label='Linear model') plt.plot(y,svr_poly.predict(X),color='blue', label='Polynomial model') plt.xlabel('X, other features') plt.ylabel('win') plt.title('Support Vector Regression') plt.legend() plt.show() return [svr_rbf.predict(x)[0],svr_lin.predict(x)[0],svr_poly.predict(x)[0]] df = pd.read_csv('data.csv') data_np_array = df.values y = np.ndarray.copy(data_np_array[:,6]) Xleft = np.ndarray.copy(data_np_array[:,:6]) Xright = np.ndarray.copy(data_np_array[:,7:]) X = np.hstack((Xleft,Xright)) x0 = np.ndarray.copy(X[0,:]) xp = predict_win(X,y,x0) percent_off = [min(data_np_array[0,2],prediction)/max(data_np_array[0,2],prediction) for prediction in xp] 

Die Zwischenschritte, wo Sie die importierten Daten aufräumen, drehen Sie sie von einem Dataframe zu einem numpy Array, kopieren Sie Ihre 7. Spalte als Regression, um sie zu platzieren, sie aus Ihren Trainingsdaten zu löschen und ein neues Array neu zu erstellen, muss vor der Anpassung erfolgen Die SVR.

 df = pd.read_csv('data.csv') data_np_array = df.values y = np.ndarray.copy(data_np_array[:,6]) Xleft = np.ndarray.copy(data_np_array[:,:6]) Xright = np.ndarray.copy(data_np_array[:,7:]) X = np.hstack((Xleft,Xright)) 

Lassen Sie mich wissen, ob diese funktionierten. Ich habe gerade ein paar Zeilen aus deiner Datentabelle oben genommen.

Python ist die beste Programmiersprache der Welt.