包含字符串列的testdata的分类

时间:2018-05-02 19:04:52

标签: python dataframe classification random-forest

所以我使用机器学习来预测一些数据的类,如下面给出的样本。 我的数据与服务器上运行的某些调度程序以及提交时间和server_type有关,我正在标记类

Dataframe: df= sch_name  server_type  subit_time   submit_by    Class
               RCALCAPP  X3333        165703       AAAA         1
               RCALCAPP  X3333        105703       BBBB         0
               PCALCAPP  X3333        165703       AAAA         1
               .
               .
               TCALCAPP  X3344        095703       CCCC         0

运行分类器我正在对字符串列值进行lableencoding。不知道ecode是否正确,但它对我有用

le = preprocessing.LabelEncoder()
df = df.apply(le.fit_transform)

此外,我不需要submit_by列来训练分类器,所以我将其删除

featureNames = [col for col in df.columns if col not in ['submit_by','status']]

准备一个模型我已经将数据框架分成了训练,cv,测试并在下面使用

trainFeatures = training[featureNames].values
trainClasses  = training['status'].values

testFeatures= test[featureNames].values
testClasses  = test['status'].values
clf = RandomForestClassifier()
clf.fit(trainFeatures, trainClasses)
score = clf.score(testFeatures, testClasses)
print(score) #.99823742

直到这里,每件事都是okay.classifier正在运行数据。但是现在我想测试新的分类记录。我试着做以下事情:

test_sch = ['TCALCAPP',  'X3344',  '075703']
class_code = clf.predict(test_sch) # [1]

它给出了错误

ValueError: could not convert string to float: 'TCALCAPP'

我知道原因,因为它没有被编码为数字。这是我的问题,如何做到这一点。我需要为' TCALCAPP' X3344'传递编码值。但是我怎么知道新测试数据的编码值。我的方法可能是错误的,但要求与上述相同。请帮助。

0 个答案:

没有答案