使用随机森林预测销售订单交货时间
Sales Order Delivery time Prediction Using Random Forest
这是一个很菜鸟的问题。但我已经实施了随机森林算法来根据来源、目的地、供应商等预测交货所需的天数。
我已经使用过去 12 个月的数据(80% 训练,20% 测试数据)实施了 RF,并取得了不错的结果
我的问题是,对于实现 RF,我已经没有了。交付但未来的天数在我的数据集中,我不会有该列。我应该如何使用这个已经训练好的模型来使用起点、目的地、日期等进行未来预测?
这是我的随机森林,如您所见,我将数据集分成两部分:y 和 x。 y 是预测值或列,x 是整个数据集减去 y。这样您就可以使用您的训练集来预测您的情况下的交货时间。
注意:此代码用于森林 REGRESSOR,如果您需要分类器代码,请告诉我!
只是数据框定义:
y = df[targetkolom] #predicted column or target column
x = df.drop(targetkolom, 1) #Whole dataset minus target column
完整代码:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
df = pd.read_csv('Dataset Carprices.csv')
df.head()
df = df.drop(['car_ID', 'highwaympg', 'citympg'], 1)
targetkolom = 'price'
#Preperation on CarName
i =0
while i < len(df.CarName):
df.CarName[i] = df.CarName[i].split()[0]
i += 1
pd.set_option('display.max_columns', 200)
#(df.describe())
#Dataset standardization
df = pd.get_dummies(df, columns=['CarName','fueltype','aspiration','doornumber','carbody',
'drivewheel','enginelocation','enginetype','cylindernumber',
'fuelsystem'], prefix="", prefix_sep="")
#print(df.info())
y = df[targetkolom]
x = df.drop(targetkolom, 1)
#Normalisation
x = (x-x.min())/(x.max()-x.min())
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.3 ,random_state=7)
model = RandomForestRegressor(n_estimators=10000, random_state=1)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
print('Root Mean Squared Error:', np.sqrt(mean_squared_error(y_test, y_pred)))
print('R2 score:', r2_score(y_test,y_pred))
这是一个很菜鸟的问题。但我已经实施了随机森林算法来根据来源、目的地、供应商等预测交货所需的天数。 我已经使用过去 12 个月的数据(80% 训练,20% 测试数据)实施了 RF,并取得了不错的结果
我的问题是,对于实现 RF,我已经没有了。交付但未来的天数在我的数据集中,我不会有该列。我应该如何使用这个已经训练好的模型来使用起点、目的地、日期等进行未来预测?
这是我的随机森林,如您所见,我将数据集分成两部分:y 和 x。 y 是预测值或列,x 是整个数据集减去 y。这样您就可以使用您的训练集来预测您的情况下的交货时间。
注意:此代码用于森林 REGRESSOR,如果您需要分类器代码,请告诉我!
只是数据框定义:
y = df[targetkolom] #predicted column or target column
x = df.drop(targetkolom, 1) #Whole dataset minus target column
完整代码:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
df = pd.read_csv('Dataset Carprices.csv')
df.head()
df = df.drop(['car_ID', 'highwaympg', 'citympg'], 1)
targetkolom = 'price'
#Preperation on CarName
i =0
while i < len(df.CarName):
df.CarName[i] = df.CarName[i].split()[0]
i += 1
pd.set_option('display.max_columns', 200)
#(df.describe())
#Dataset standardization
df = pd.get_dummies(df, columns=['CarName','fueltype','aspiration','doornumber','carbody',
'drivewheel','enginelocation','enginetype','cylindernumber',
'fuelsystem'], prefix="", prefix_sep="")
#print(df.info())
y = df[targetkolom]
x = df.drop(targetkolom, 1)
#Normalisation
x = (x-x.min())/(x.max()-x.min())
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.3 ,random_state=7)
model = RandomForestRegressor(n_estimators=10000, random_state=1)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
print('Root Mean Squared Error:', np.sqrt(mean_squared_error(y_test, y_pred)))
print('R2 score:', r2_score(y_test,y_pred))