sklearn 0.17 版本 方法过时问题
来源:互联网 发布:java手机 编辑:程序博客网 时间:2024/06/12 18:47
- 发现问题
- 解决方案
发现问题
最早使用的是0.15 版本的sklearn 后来更换的开发环境,使用了0.17版本,但是出现了无法运行的问题,在一番搜索之后在stackoverflow上找到了答案
DeprecationWarning: Directsupport for sequence of sequences multilabel representation will be unavailable from version 0.17. Use sklearn.preprocessing.MultiLabelBinarizer to convert to a label indicator representation.
之前的代码是这样写的,直接使用提取出来的标签进行fit
cvt = CountVectorizer(tokenizer=self.tokenizer, min_df=4, stop_words=self.stop_words)self.classifier = Pipeline([('vectorizer', cvt), ('clf', OneVsRestClassifier(SGDClassifier(loss='hinge', alpha=1e-5, eta0=0.25, n_iter=50,), n_jobs=12))])words, tags = self.inputData(self.train_file)self.classifier.fit(words, tags)pickle.dump(self.classifier, open("zzz.pickle", 'wb'))
解决方案
使用 MultiLabelBinarizer 先将多标签进行多标签二值化,然后将转换的编码表存储下来
然后再使用之前的方式,使用训练数据对模型进行fit,然后再把真正的模型dump下来,这样就可以成功运行了。
感觉是sklearn升级时候不再支持使用原始的数据格式进行fit,必须要提前进行多标签二值化
words, tags_unique, tags_normal = self.inputData(self.train_file)tags_handled = list(tags_unique)print "\t".join(tags_handled)mlb = MultiLabelBinarizer(classes=tags_handled)tags_train_mlb = mlb.fit_transform(tags_normal)pickle.dump(mlb, open("mlb_ind.pickle", 'wb'))# text.CountVectorizer:将文本转换为每个词出现的个数的向量# text.TfidfVectorizer:将文本转换为tfidf值的向量# text.HashingVectorizer:文本的特征哈希cvt = CountVectorizer(tokenizer=self.tokenizer, min_df=4, stop_words=self.stop_words)# OneVsRestClassifier:1 - rest多分类(多标签)策略# OneVsOneClassifier:1 - 1 多分类策略# OutputCodeClassifier:1个类用一个二进制码表示clf = OneVsRestClassifier(SGDClassifier(loss='hinge', alpha=1e-5, eta0=0.25, n_iter=50, n_jobs=12))self.classifier = Pipeline([ ('vectorizer', cvt), # ('tfidf', TfidfTransformer()), ('clf', clf)])self.classifier.fit(words, tags_train_mlb)pickle.dump(self.classifier, open("zzz17.pickle", 'wb'))print("#### classifier dumped!")
此外有一点需要注意,使用上面训练的模型进行predict之后,要使用多标签二值化的编码表进行反向转换从而得到真正的计算值
predict = model.predict([company])mlb = pickle.load(open("mlb_ind.pickle","rb"))result = mlb.inverse_transform(predict)
阅读全文
1 0
- sklearn 0.17 版本 方法过时问题
- JTextPassword中的getText()方法过时的问题
- Android通知栏,setLatestEventInfo方法过时问题
- Hibernate5.2版本之后 createCriteria()方法过时的替换方式
- 解决点击空白关闭popupWindow方法过时问题
- 解决Android中getResources().getColor()方法过时的问题
- anaconda升级sklearn版本
- anaconda升级sklearn版本
- 已过时的方法
- sizeWithFont方法过时替换
- Android过时方法替代
- getDrawable过时替代方法
- 245_getColor方法过时
- 316_getColor方法过时
- renderer.material 方法过时
- AndroidStudio getColor方法过时
- getColor过时方法替代
- AK100驱动过时问题
- WebApp 移动web资源整理
- 设置android板子ip
- Unity3d日记--第一天
- tableExport.js对table进行导出excel
- android随机整屏幕鲜花掉落
- sklearn 0.17 版本 方法过时问题
- bzoj 3688: 折线统计 (DP+树状数组)
- 162. Find Peak Element
- 创建线程并让它开始执行的实例
- 4. Median of Two Sorted Arrays-python
- 社工必备查询网址汇总
- 代码块详解
- 二叉树前序遍历 ,后序遍历 , 中序遍历的问题
- java同步锁-实现买火车票