基于多个输入(如月和固定值列)预测多个输出

时间:2017-12-19 10:23:05

标签: python machine-learning regression

enter image description here

我有一个如图所示的数据。它大约是25,000行。该数据包含过去4年中12个月的详细信息。我想预测特定月份和特定职位的客户和职位空缺。

from sklearn.cross_validation import train_test_split
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
df_final['Clientname_numeric'] = le.fit_transform(df_final['ClientName'])
X = df_final[['MONTH','JobTitleID']]
y = df_final[['PositionsOpened','Clientname_numeric']]
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size = 0.05 )
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
clf = RandomForestClassifier()
clf.fit(x_train, y_train)
predictions = clf.predict(x_test)
predictions = predictions.astype(int)
accuracy = accuracy_score(y_test,predictions)

我使用上面的代码并收到错误 ValueError:不支持多类多输出

2 个答案:

答案 0 :(得分:1)

您可以使用包scikit learnrandom forest classifier。我应该指出,我对机器学习只有非常肤浅的知识,所以对于你的具体案例,这可能只是错误的。然而,RandomForestClassifier允许一次预测多个输出。

一般情况下,根据您的数据,您可以这样处理(使用Scikit Learn):

  • 将表拆分为输入列和输出列。这可以使用pandas包最容易地完成。然后将它们分成训练和测试子集。 Scikit提供off-the-shelf solution for this
  • 创建类似RandomForestClassifier的分类器实例,并使用训练集中的输入和输出数据(classifier.train(inputs_train, outputs_train)
  • 对其进行训练
  • 根据测试数据的输入,预测输出(classifier.predict(inputs_predict))。决定您是否对分类器的预测质量感到满意。

答案 1 :(得分:0)

为了对多个输出进行分类,sklearn有this库,它需要一个基本估算器,如随机森林,渐变增强等。

该库允许多输出回归和分类。

希望这有帮助!