我正在尝试解决标签列包含字符串值的分类问题。
使用pandas.get_dummies将数据框转换为二进制值。
训练了Randomforest分类器(scikit)模型
腌制模型
解开模型
通过了测试数据,并从Radom Forest分类器中获得了结果
输出为二进制格式
想将此数据取反为其原始字符串值。
请提出是否有解决方案。
注意:- 直到分类器得到结果,互联网上的大多数线程才把我带走。或在单个程序中进行培训和测试。
答案 0 :(得分:0)
除了您的问题外,请使用joblib而不是pickle,因为它是predict method,现在对于您的问题,还需要考虑一些事项:
酸洗与否,您的治疗效果是相同的。酸洗是一种存储模型的方法,一旦对随机森林进行酸洗,它便具有与以前相同的属性和特性。可能是您误认为您的输入格式或您不知道如何应用预测方法。让我们举个例子:一个具有3个类别变量和一个取决于3个功能的特定类的DataFrame。
windows.alert()
现在应用一次性编码并将随机森林拟合为“类”列:
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
df = pd.read_csv(data='example.csv', columns=['val1', 'val2', 'val3', 'class'])
使用joblib转储和加载模型:
#Turning it into dummies
dummies = pd.get_dummies(df[['col1', 'col2', 'col3']])
#Random forest
clf = RandomForestClassifier()
model = clf.fit(dummies, df.class)
或者如果您坚持用泡菜,也可以:
from sklearn.externals import joblib
#Dumping
joblib.dump(clf, 'filename.pkl')
#Loading
clf = joblib.load('filename.pkl')
现在,您重新加载了模型,获取结果的正确方法是: 使用{{3}}从另一个值获取类。图片中您具有另一个具有类似格式的DataFrame,但缺少class列。您可以通过以下方式进行操作:
import cPickle
#Dumping
with open('path/to/file', 'wb') as f:
cPickle.dump(clf, f)
#Loading
with open('path/to/file', 'rb') as f:
clf = cPickle.load(clf)