python - scikit - sklearn Problema LinearRegression.Predict()
sklearn linear regression multiple variables (1)
Para construir un modelo de regresión, necesita datos de capacitación y puntajes de capacitación. Estos le permiten ajustar un conjunto de parámetros de regresión al problema.
Luego, para predecir, necesitas datos de predicción, pero NO puntajes de predicción, porque no los tienes, ¡estás tratando de predecirlos!
El siguiente código, por ejemplo, se ejecutará:
from sklearn.linear_model import LinearRegression
import numpy as np
trainingData = np.array([ [2.3,4.3,2.5], [1.3,5.2,5.2], [3.3,2.9,0.8], [3.1,4.3,4.0] ])
trainingScores = np.array([3.4,7.5,4.5,1.6])
clf = LinearRegression(fit_intercept=True)
clf.fit(trainingData,trainingScores)
predictionData = np.array([ [2.5,2.4,2.7], [2.7,3.2,1.2] ])
clf.predict(predictionData)
Parece que está colocando una cantidad incorrecta de argumentos en su llamada de predict()
; eche un vistazo a mi fragmento aquí y podrá averiguar cómo cambiarlo.
Solo por interés, puede ejecutar la siguiente línea para obtener acceso a los parámetros que la regresión se ajusta a los datos: print repr(clf.coef_)
Estoy tratando de predecir el volumen de llamadas para un centro de llamadas en función de varios otros factores. Tengo un conjunto de datos bastante limpio, bastante pequeño también, pero suficiente. Puedo entrenar y probar datos históricos y obtener un puntaje, un resumen, etc. Estoy en la imposibilidad de pensar cómo lograr que prediga futuras llamadas utilizando datos de factores pronosticados. Mis datos están abajo:
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
El código que tengo hasta ahora está abajo:
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()))
Por supuesto, esto me da el error de que hay valores nulos en los valores y, que existen porque está en blanco y estoy tratando de predecirlo. El problema aquí es que soy lo suficientemente nuevo para Python que básicamente no entiendo cómo se debe construir esto. incluso si funcionó de esta manera, no sería correcto, no está teniendo en cuenta los datos pasados al construir el modelo para predecir el futuro. ¿Debo tener estos en el mismo archivo posiblemente? de ser así, cómo le digo que considere estas 3 columnas de la fila a a la fila b, prediga la columna dependiente para las mismas filas, luego aplique ese modelo para analizar esas tres columnas para los datos futuros y pronostique las futuras llamadas. No espero toda la respuesta aquí, este es mi trabajo, pero cualquier pequeña pista sería muy apreciada.