from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
import numpy as np
from pandas import read_csv
import pandas as pd root1="F:/goverment/shuili2/techproblem_text_train.csv"
root2="F:/goverment/shuili2/techproblem_text_test.csv"
root3="F:/goverment/shuili2/text_train_4problem.csv"
root4="F:/goverment/shuili2/text_test_4problem.csv" '''大类小类一起预测'''
#root2="./id="+str(id_num)+"_process_data.csv"
dataset1 = read_csv(root1) #数据转化为数组
dataset1=dataset1.values
dataset2 = read_csv(root2) #数据转化为数组
dataset2=dataset2.values
X_train=dataset1[:,:28]# 到28之前都是变量
Y_train=dataset1[:,28:]# 28到之后都是lable
X_test=dataset2[:,:28]
Y_test=dataset2[:,28:] print('多输出多分类器真实输出分类:\n',Y_train)
n_samples, n_features = X_train.shape #4000 29
n_outputs = Y_train.shape[1] # 4000*8
n_classes = 50 # 每种输出有50种分类
forest = RandomForestClassifier(n_estimators=500,random_state=1) # 生成随机森林多分类器
multi_target_forest = MultiOutputClassifier(forest) # 构建多输出多分类器
y_pred = multi_target_forest.fit(X_train, Y_train).predict(X_train)
print('多输出多分类器预测输出分类:\n',y_pred)
pp=multi_target_forest.predict(X_test)
a=pp
k=0
for i in range(len(a)):
if a[i][0]==Y_test[i][0] and a[i][1]==Y_test[i][1] and a[i][2]==Y_test[i][2] and a[i][3]==Y_test[i][3] and a[i][4]==Y_test[i][4] and a[i][5]==Y_test[i][5] and a[i][6]==Y_test[i][6] and a[i][7]==Y_test[i][7]:
k+=1
aa=k/1328*1.0
print(aa) '''只预测大类'''
#root2="./id="+str(id_num)+"_process_data.csv"
dataset3 = read_csv(root1) #数据转化为数组
dataset3=dataset3.values
dataset4 = read_csv(root2) #数据转化为数组
dataset4=dataset4.values
X_train_big=dataset3[:,:28]
Y_train_big=dataset3[:,28:32]
X_test_big=dataset4[:,:28]
Y_test_big=dataset4[:,28:32]
print('只预测大类:多输出多分类器真实输出分类:\n',Y_train_big)
n_samples, n_features = X_train_big.shape #4000 29
n_outputs = Y_train_big.shape[1] # 4000*8
n_classes = 11 # 每种输出有11种分类
forest = RandomForestClassifier(n_estimators=200,random_state=1) # 生成随机森林多分类器
multi_target_forest = MultiOutputClassifier(forest) # 构建多输出多分类器
y_pred = multi_target_forest.fit(X_train_big, Y_train_big).predict(X_train_big)
print('多输出多分类器预测输出分类:\n',y_pred)
pp=multi_target_forest.predict(X_test_big)
a=pp
k=0
for i in range(len(a)):
if a[i][0]==Y_test_big[i][0] and a[i][1]==Y_test_big[i][1] and a[i][2]==Y_test_big[i][2] and a[i][3]==Y_test_big[i][3]:
k+=1
aa=k/1328*1.0
print(aa) '''只预测小类'''
#root2="./id="+str(id_num)+"_process_data.csv"
dataset4 = read_csv(root3) #数据转化为数组
dataset4=dataset4.values
dataset5 = read_csv(root4) #数据转化为数组
dataset5=dataset5.values
X_train_samll=dataset4[:,:28]
Y_train_samll=dataset4[:,28:32]
X_test_samll=dataset5[:,:28]
Y_test_samll=dataset5[:,28:32]
print('只预测小类:多输出多分类器真实输出分类:\n',Y_train_samll)
n_samples, n_features = X_train_samll.shape #4000 29
n_outputs = Y_train_samll.shape[1] # 4000*4
n_classes = 61 # 每种输出有61种分类
forest = RandomForestClassifier(n_estimators=200,random_state=1) # 生成随机森林多分类器
multi_target_forest = MultiOutputClassifier(forest) # 构建多输出多分类器
y_pred = multi_target_forest.fit(X_train_samll, Y_train_samll).predict(X_train_samll)
print('多输出多分类器预测输出分类:\n',y_pred)
pp=multi_target_forest.predict(X_test_samll)
a=pp
k=0
for i in range(len(a)):
if a[i][0]==Y_test_samll[i][0] and a[i][1]==Y_test_samll[i][1] and a[i][2]==Y_test_samll[i][2] and a[i][3]==Y_test_samll[i][3]:
k+=1
aa=k/1328*1.0
print(aa) '''
from pandas import read_csv
import pandas as pd
import numpy as np
from skmultilearn.problem_transform import BinaryRelevance
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score root1="D:/Anaconda3-5.0.1-Windows-x86_64/anaconda/work/shuili2/data.csv"
#root2="./id="+str(id_num)+"_process_data.csv"
dataset = read_csv(root1) #数据转化为数组
dataset=dataset.values
x_train=dataset[:4000,:29]
y_train=dataset[:4000,29:] x_test=dataset[4000:,:29]
y_test=dataset[4000:,29:] # initialize binary relevance multi-label classifier
# with a gaussian naive bayes base classifier
classifier = BinaryRelevance(GaussianNB()) # train
classifier.fit(x_train, y_train) # predict
predictions = classifier.predict(x_test)
accuracy_score(y_test,predictions)
''' '''---------------------------------'''
'''
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
from sklearn.model_selection import train_test_split, KFold, cross_val_score
from sklearn.preprocessing import LabelEncoder
from pandas import read_csv
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score root1="D:/Anaconda3-5.0.1-Windows-x86_64/anaconda/work/shuili2/data.csv"
#root2="./id="+str(id_num)+"_process_data.csv"
dataset = read_csv(root1) #数据转化为数组
dataset=dataset.values # load dataset
dataframe = pd.read_csv("data.csv", header=None)
dataset = dataframe.values
X = dataset[:, 0:29].astype(float)
Y = dataset[:, 29:] # encode class values as integers
#encoder = LabelEncoder()
#encoded_Y = encoder.fit_transform(Y)
# convert integers to dummy variables (one hot encoding)
#dummy_y = np_utils.to_categorical(encoded_Y) # define model structure
def baseline_model():
model = Sequential()
model.add(Dense(output_dim=10, input_dim=29, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(output_dim=8, input_dim=10, activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
estimator = KerasClassifier(build_fn=baseline_model, nb_epoch=200, batch_size=50)
# splitting data into training set and test set. If random_state is set to an integer, the split datasets are fixed.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.01, random_state=0)
estimator.fit(X_train, Y_train) # make predictions
pred = estimator.predict(X_test) # inverse numeric variables to initial categorical labels
#init_lables = encoder.inverse_transform(pred) # k-fold cross-validate
seed = 42
np.random.seed(seed)
kfold = KFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(estimator, X, Y, cv=kfold)
'''
from pandas import read_csv

root1="F:/goverment/shuili2/techproblem_text_train.csv"
root2="F:/goverment/shuili2/techproblem_text_test.csv"
root3="F:/goverment/shuili2/text_train_4problem.csv"
root4="F:/goverment/shuili2/text_test_4problem.csv" '''大类小类一起预测'''
#root2="./id="+str(id_num)+"_process_data.csv"
dataset1 = read_csv(root1) #数据转化为数组
dataset1=dataset1.values
dataset2 = read_csv(root2) #数据转化为数组
dataset2=dataset2.values
X_train=dataset1[:,:28]
Y_train=dataset1[:,28:]
X_test=dataset2[:,:28]
Y_test=dataset2[:,28:] from pprint import pprint
pprint(dataset1) ##使用二进制相关性
#scikit-multilearn
from skmultilearn.problem_transform import BinaryRelevance
from sklearn.naive_bayes import GaussianNB #initialize二进制相关多标签分类器
#用高斯朴素贝叶斯基分类器
classifier = BinaryRelevance(GaussianNB()) #训练
classifier.fit(X_train, Y_train) #预测
predictions = classifier.predict(X_test) #计算精度用
from sklearn.metrics import accuracy_score
accuracy_score(Y_test,predictions)

python多标签分类模版的更多相关文章

  1. Python-HTML 最强标签分类

    编程: 使用(展示)数据 存储数据 处理数据 前端 1. 前端是做什么的? 2. 我们为什么要学前端? 3. 前端都有哪些内容? 1. HTML 2. CSS 3. JavaScript 4.jQue ...

  2. 前端入门html(常用标签及标签分类)

    day47 参考:https://www.cnblogs.com/liwenzhou/p/7988087.html 任何标签都有有三个属性:ID,class.style <!DOCTYPE ht ...

  3. 使用MXNet远程编写卷积神经网络用于多标签分类

    最近试试深度学习能做点什么事情.MXNet是一个与Tensorflow类似的开源深度学习框架,在GPU显存利用率上效率高,比起Tensorflow显著节约显存,并且天生支持分布式深度学习,单机多卡.多 ...

  4. LM-MLC 一种基于完型填空的多标签分类算法

    LM-MLC 一种基于完型填空的多标签分类算法 1 前言 本文主要介绍本人在全球人工智能技术创新大赛[赛道一]设计的一种基于完型填空(模板)的多标签分类算法:LM-MLC,该算法拟合能力很强能感知标签 ...

  5. scikit-learn一般实例之八:多标签分类

    本例模拟一个多标签文档分类问题.数据集基于下面的处理随机生成: 选取标签的数目:泊松(n~Poisson,n_labels) n次,选取类别C:多项式(c~Multinomial,theta) 选取文 ...

  6. CSS.02 -- 样式表 及标签分类(块、行、行内块元素)、CSS三大特性、背景属性

    样式表书写位置  内嵌式写法 <head> <style type="text/css"> 样式表写法 </style> </head&g ...

  7. html(常用标签,标签分类),页面模板, CSS(css的三种引入方式),三种引入方式优先级

    HTML 标记语言为非编程语言负责完成页面的结构 组成: 标签:被<>包裹的由字母开头,可以结合合法字符( -|数字 ),能被浏览器解析的特殊符号,标签有头有尾 指令:被<>包 ...

  8. 前端 HTML 标签分类

    三种: 1.块级标签: 独占一行,可设置宽度,高度.如果设置了宽度和高度,则就是当前的宽高.如果宽度和高度没有设置,宽度是父盒子的宽度,高度根据内容填充. 2.行内标签:在一行内显示,不能设置宽度,高 ...

  9. htm基础知识,css的链入以及标签分类。

    <!DocTYPE>  DOC--Document 文档  TYPE  类型  文档类型 告诉浏览器这是什么文件 单标签: meta  设置   charset  设置编码 双标签: 开始 ...

随机推荐

  1. 模式窗体中调用父页面js与非模式化调用非父页面的js方法

    最近项目中使用模式窗体,遇到以下问题记录一下: 模式窗体:你必须关闭该窗体,才能操作其它窗体:比如说,必须按确定或取消,或者按关闭. 非模式窗体:不必关闭该窗体,就可转换到其它窗体上进行操作. 一:非 ...

  2. 消除浏览器对input输入框的自动填充

    Mozilla官方文档建议的是 直接使用 autocomplete = ‘off’ 即可禁止输入框从浏览器cache获取数据,博主以前使用这个也就足够兼容浏览器了. 现在发现,却在chrome.fir ...

  3. window环境下创建Flask项目需要安装常见模块命令

    安装Flask环境 pip install flask==0.10.1 使用命令行操作 pip install flask-script 创建表单 pip install flask-wtf 操作数据 ...

  4. Jmter安装和配置

    一.安装JDK 安装JDK 选择安装目录 安装过程中会出现两次安装提示 .第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文 ...

  5. 解决TensorFlow最新代码编译错误问题

    老是有个习惯,看到开源代码更新了,总是想更新到最新版,如果置之不理的话,就感觉自己懒惰了或有的不负责任了,这个也可能是一种形式的强迫症吧: 前几天晚上git pull TensorFlow,完事后也没 ...

  6. Office for Mac

    前情 真的用不惯Mac上的pages,所以就找Mac版的office.找了一个发觉不对,安装总是出错,当时也没有太大的需求,就把这事搁置了下来.今天要写技术文档的时候才终于下决心要把office下再下 ...

  7. [Python]定时任务框架 APScheduler

    1.使用APScheduler教程 参考博客地址

  8. Git详解之六 Git工具

    以下内容转载自:http://www.open-open.com/lib/view/open1328070367499.html Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控 ...

  9. Java 输出文件通过 BufferedWriter.newline() 方法换行

    最近项目中需要导出文件,其实导出文件是一个挺简单的事情.但是却遇到了很奇怪的问题. 首先导出到文件需要用到 BufferedWriter.而换行则是通过 bw.newline() 方法,问题将出在 n ...

  10. BZOJ3675 Apio2014 序列分割 【斜率优化】

    Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首 ...