Ich versuche Call-Volumen für ein Call-Center basierend auf verschiedenen anderen Faktoren vorherzusagen. Ich habe einen ziemlich sauberen Datensatz, ziemlich klein, aber genug. Ich bin in der Lage, historische Daten zu trainieren und zu testen und eine Punktzahl, eine Zusammenfassung usw. zu erhalten. Ich bin für das Leben von mir nicht in der Lage, herauszufinden, wie ich dann zukünftige Prognosen mit prognostizierten Faktordaten vorhersagen kann. Meine Daten unter:sklear LinearRegression.Predict() Problem
Date DayNum factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9 VariableToPredict
9/17/2014 1 592 83686.46 0 0 250 15911.8 832 99598.26 177514 72
9/18/2014 2 1044 79030.09 0 0 203 23880.55 1238 102910.64 205064 274
9/19/2014 3 707 84207.27 0 0 180 8143.32 877 92350.59 156360 254
9/20/2014 4 707 97577.78 0 0 194 16688.95 891 114266.73 196526 208
9/21/2014 5 565 83084.57 0 0 153 13097.04 713 96181.61 143678 270
Der Code, den ich bisher habe unten:
from sklearn import metrics
from sklearn.preprocessing import StandardScaler
from sklearn.cross_validation import KFold, cross_val_score
from sklearn.linear_model import LinearRegression
import pandas as pd
d = pd.read_csv("H://My Documents//Python Scripts//RawData//Q2917.csv", "r", delimiter=",")
e = pd.read_csv("H://My Documents//Python Scripts//RawData//FY16q2917Test.csv", "r", delimiter=",")
#print(d)
#b = pd.DataFrame.as_matrix(d)
#print(b)
x = d.as_matrix(['factor2', 'factor4', 'factor5', 'factor6'])
y = d.as_matrix(['VariableToPredict'])
x1 = e.as_matrix(['factor2', 'factor4', 'factor5', 'factor6'])
y1 = e.as_matrix(['VariableToPredict'])
#print(len(train))
#print(target)
#use scaler
scalerX = StandardScaler()
train = scalerX.fit_transform(x1)
scalerY = StandardScaler()
target = scalerY.fit_transform(y1)
clf = LinearRegression(fit_intercept=True)
cv = KFold(len(train), 10, shuffle=True, random_state=33)
#decf = LinearRegression.decision_function(train, target)
test = LinearRegression.predict(train, target)
score = cross_val_score(clf,train, target,cv=cv)
print("Score: {}".format(score.mean()))
Dies natürlich gibt mir den Fehler, dass es NULL-Werte in den y-Werten, die es gibt, weil es leer und ich versuche es vorherzusagen. Das Problem hier ist, ich bin Python neu genug, dass ich grundsätzlich falsch verstehe, wie das aufgebaut werden sollte. Selbst wenn es so funktioniert, wäre es nicht korrekt, es berücksichtigt nicht die Daten aus der Vergangenheit, wenn das Modell erstellt wird, um die Zukunft vorherzusagen. Muss ich diese in der gleichen Datei möglicherweise haben? Wenn ja, wie soll ich sagen, dass ich diese 3 Spalten von Zeile a bis Zeile b berücksichtigen soll, die abhängige Spalte für die gleichen Zeilen vorhersage, dann dieses Modell anwenden, um diese drei Spalten für die zukünftigen Daten zu analysieren und die zukünftigen Aufrufe vorherzusagen. Ich erwarte nicht die ganze Antwort hier, das ist meine Aufgabe zu tun, aber alle kleinen Hinweise würden sehr geschätzt werden.
ich klarstellen sollte, dass die oben genannten Daten ist nur ein Ausschnitt. Ich versuche nicht anhand einiger Zeilen zu prognostizieren. – Mellvinbaker
Für die Trainingsdaten benötigen Sie die Variable, die Sie vorhersagen möchten. Ist das die Frage? –
Nicht genau. Für Reihen der Daten in der Vergangenheit möchte ich das Regressionsmodell trainieren, weil ich tatsächliche Daten für die unabhängigen und abhängigen Variablen habe. Verwenden Sie dann die unabhängigen Variablen im Rest der Zeilen (vorhergesagte zukünftige Werte), um die zukünftige abhängige Variable vorherzusagen. – Mellvinbaker