所以我使用机器学习来预测一些数据的类,如下面给出的样本。 我的数据与服务器上运行的某些调度程序以及提交时间和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'传递编码值。但是我怎么知道新测试数据的编码值。我的方法可能是错误的,但要求与上述相同。请帮助。