python多分类预测模版,输出支持度,多种分类器,str的csv转float
预测结果为1到11中的1个
首先加载数据,训练数据,训练标签,预测数据,预测标签:
if __name__=="__main__":
importTrainContentdata()
importTestContentdata()
importTrainlabeldata()
importTestlabeldata()
traindata = []
testdata = []
trainlabel = []
testlabel = [] def importTrainContentdata():
file = 'F:/goverment/myfinalcode/train_big.csv'
fo=open(file)
ls=[]
for line in fo:
line=line.replace("\t",",")
line=line.replace("\n",",")
line=line.replace("\"",",")
ls.append(line.split(","))
for i in ls:
li=[]
for j in i:
if j == '':
continue
li.append(float(j))
traindata.append(li) def importTestContentdata():
file = 'F:/goverment/myfinalcode/test_big.csv'
fo=open(file)
ls=[]
for line in fo:
line=line.replace("\t",",")
line=line.replace("\n",",")
line=line.replace("\"",",")
ls.append(line.split(","))
for i in ls:
li=[]
for j in i:
if j == '':
continue
li.append(float(j))
testdata.append(li) #导入类别的训练和测试数据
def importTrainlabeldata():
file = 'F:/goverment/myfinalcode/train_big_label.xls'
wb = xlrd.open_workbook(file)
ws = wb.sheet_by_name("Sheet1")
for r in range(ws.nrows):
col = []
for c in range(1):
col.append(ws.cell(r, c).value)
trainlabel.append(col) def importTestlabeldata():
file = 'F:/goverment/myfinalcode/test_big_label.xls'
wb = xlrd.open_workbook(file)
ws = wb.sheet_by_name("Sheet1")
for r in range(ws.nrows):
col = []
for c in range(1):
col.append(ws.cell(r, c).value)
testlabel.append(col)
其中训练数据,预测数据是csv文件格式,而且是str,要转为float并一排排放入lis,然后将所有lis放入traindata或testdata中,但csv中是以","隔开的,所以要将"\t"等都转为",",需要利用
ls.append(line.split(","))放入ls中,但仍然是str型的,我又另外转化成了float,后来发
现不转化也是可以的,可能它后来会在即转化吧。
之后运用多种分类器,调参数参考
http://scikit-learn.org/stable/supervised_learning.html#supervised-learning 然后选出尽量好的分类器,提高准确率
'''
#19%
from sklearn import neighbors
knn=neighbors.KNeighborsClassifier(n_neighbors=75, leaf_size=51, weights='distance',p=2)
knn.fit(traindata, trainlabel)
predict=knn.predict(testdata)
''' '''
#这个不行
from sklearn.neural_network import MLPClassifier
import numpy as np
traindata = np.array(traindata)#TypeError: cannot perform reduce with flexible type
traindata = traindata.astype(float) trainlabel = np.array(trainlabel)
trainlabel = trainlabel.astype(float) testdata=np.array(testdata)
testdata = testdata.astype(float)
model=MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto',
beta_1=0.9, beta_2=0.999, early_stopping=False,
epsilon=1e-08, hidden_layer_sizes=(5, 2), learning_rate='constant',
learning_rate_init=0.001, max_iter=200, momentum=0.9,
nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False,
warm_start=False)
model.fit(traindata, trainlabel)
predict = model.predict(testdata)
''' '''
#19%
from sklearn.tree import DecisionTreeClassifier
model=DecisionTreeClassifier(class_weight='balanced',max_features=68,splitter='best',random_state=5)
model.fit(traindata, trainlabel)
predict = model.predict(testdata) 这个不行
from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB(alpha=0.052).fit(traindata, trainlabel)
#clf.fit(traindata, trainlabel)
predict=clf.predict(testdata)
''' '''17%
from sklearn.svm import SVC
clf = SVC(C=150,kernel='rbf', degree=51, gamma='auto',coef0=0.0,shrinking=False,probability=False,tol=0.001,cache_size=300, class_weight=None,verbose=False,max_iter=-1,decision_function_shape=None,random_state=None)
clf.fit(traindata, trainlabel)
predict=clf.predict(testdata)
''' '''0.5%
from sklearn.naive_bayes import GaussianNB
import numpy as np
gnb = GaussianNB()
traindata = np.array(traindata)#TypeError: cannot perform reduce with flexible type
traindata = traindata.astype(float)
trainlabel = np.array(trainlabel)
trainlabel = trainlabel.astype(float)
testdata=np.array(testdata)
testdata = testdata.astype(float)
predict = gnb.fit(traindata, trainlabel).predict(testdata)
''' '''16%
from sklearn.naive_bayes import BernoulliNB
import numpy as np
gnb = BernoulliNB()
traindata = np.array(traindata)#TypeError: cannot perform reduce with flexible type
traindata = traindata.astype(float) trainlabel = np.array(trainlabel)
trainlabel = trainlabel.astype(float) testdata=np.array(testdata)
testdata = testdata.astype(float)
predict = gnb.fit(traindata, trainlabel).predict(testdata)
''' from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators=500,random_state=5, warm_start=False, min_impurity_decrease=0.0,min_samples_split=15) # 生成随机森林多分类器 predict = forest.fit(traindata, trainlabel).predict(testdata)
输出准确率,我还把预测结果输出到txt中,方便分析。
s=len(predict)
f=open('F:/goverment/myfinalcode/predict.txt', 'w')
for i in range(s):
f.write(str(predict[i]))
f.write('\n')
f.write("写好了")
f.close()
k=0
print(s)
for i in range(s):
if testlabel[i] == predict[i]:
k=k+1
print("精度为:",k*1.0/s)
接下来是输出所有标签的支持度
print('我要开始输出支持度啦')
attribute_proba=forest.predict_proba(testdata)
#print(forest.predict_proba(testdata))#输出各个标签的概率
print(type(attribute_proba))
import xlwt
myexcel = xlwt.Workbook()
sheet = myexcel.add_sheet('sheet')
si=-1
sj=-1
for i in attribute_proba:
si=si+1
for j in i:
sj=sj+1
sheet.write(si,sj,str(j))
sj=-1
myexcel.save("attribute_proba_small.xls")
运行结果如下:

但是这样还不够,我还要输出前3个的预测结果的编号和支持度。
我开了个类attri,key用来放编号,weight则放支持度。
之后对每一条记录的所有的预测概率(支持度)遍历3次。每次找出概率最大的一个,挑出后把编号和
概率存好,并把这个值变为0,再寻找挑出最大的一个,循环3次。存好后输出到excel
'''接下来输出每组概率最大的四个的编号'''
class attri:
def __init__(self):
self.key=0
self.weight=0.0
label=[]
for i in attribute_proba:
lis=[]
k=0
while k<3:
k=k+1
p=1
mm=0
sj=-1
for j in i:
sj=sj+1
if j>mm:
mm=j
p=sj
i[p]=0#难道是从1开始?我一开始写了i【p-1】但debug时发现不对
a=attri()
a.key=p
a.weight=mm
lis.append(a)
label.append(lis)
print('挑几个输出')
import xlwt
myexcel = xlwt.Workbook()
sheet = myexcel.add_sheet('sheet')
si=-2
sj=-1
for i in label:
si=si+2
for j in i:
sj=sj+1
sheet.write(si,sj,str(j.key))
sheet.write(si+1,sj,str(j.weight))
sj=-1
myexcel.save("proba_big.xls")
运行结果如下:

自学得真辛苦啊,这些都是我的学习成果,准确还是可以在提高的,对你有帮助的话,点个赞吧,嘿嘿。
python多分类预测模版,输出支持度,多种分类器,str的csv转float的更多相关文章
- R_Studio(关联)使用apriori函数简单查看数据存在多少条关联规则,并按支持度降序排序输出
查看数据menu_orders.txt文件存在多少条关联规则,并按支持度降序排序输出 #导入arules包 install.packages("arules") library ( ...
- 分类预测输出precision,recall,accuracy,auc和tp,tn,fp,fn矩阵
此次我做的实验是二分类问题,输出precision,recall,accuracy,auc # -*- coding: utf-8 -*- #from sklearn.neighbors import ...
- 使用LIBSVM工具实现样本分类预测——MatLab
准备工作: https://www.csie.ntu.edu.tw/~cjlin/libsvm/,下载LIBSVM:(LIBSVM工具相较于MATLAB自带的工具:1).支持多分类及回归(‘-s 0’ ...
- 【机器学习具体解释】SVM解二分类,多分类,及后验概率输出
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN−勿在浮沙筑高台 支持向量机(Support Vecto ...
- 贝叶斯--旧金山犯罪分类预测和电影评价好坏 demo
来源引用:https://blog.csdn.net/han_xiaoyang/article/details/50629608 1.引言 贝叶斯是经典的机器学习算法,朴素贝叶斯经常运用于机器学习的案 ...
- 读论文《BP改进算法在哮喘症状-证型分类预测中的应用》
总结: 一.研究内容 本文研究了CAL-BP(基于隐层的竞争学习与学习率的自适应的改进BP算法)在症状证型分类预测中的应用. 二.算法思想 1.隐层计算完各节点的误差后,对有最大误差的节点的权值进行正 ...
- 13、Selenium+python+API分类总结
Selenium+python+API分类总结 http://selenium-python.readthedocs.org/index.html 分类 方法 方法描述 客户端操作 __init__( ...
- 【每日一个小技巧】Python | input的提示信息换行输出,提示信息用变量表示
[每日一个小技巧]Python | input的提示信息换行输出,提示信息用变量表示 在书写代码的途中,经常会实现这样功能: 请输入下列选项前的序号: 1.选择1 2.选择2 3.选择3 在pytho ...
- 使用BERT进行情感分类预测及代码实例
文章目录 0. BERT介绍 1. BERT配置 1.1. clone BERT 代码 1.2. 数据处理 1.2.1预训练模型 1.2.2数据集 训练集 测试集 开发集 2. 修改代码 2.1 加入 ...
随机推荐
- vue 可编辑表格组件
<template> <div class="table"> <table border="1px" v-dragform> ...
- 【css】CSS3 Media Queries 详解【转】
说起CSS3的新特性,就不得不提到 Media Queries .最近 Max Design 更新的一个泛读列表里,赫然就有关于 Media Queries 的文章.同时位列其中的也有前天我刚刚翻译的 ...
- weblogic、hibernate 包冲突
解决办法: 在weblogic 配置 [paths]项中 添加antlr-2.7.7.jar,该jar包应该位于引用weblogic.jar之前,使启动时不再加载weblogic中的低版本的antl ...
- linux配置PHP环境!!(云服务器架设)
首先去阿里云或腾讯云购买主机(腾讯云现在有免费30天的云主机...) 购买好之后选择安装: 点登陆 就可以到linux的操作界面了 进入操作界面 输入root账号密码取得权限之后就可以开始配置环境了 ...
- python常用模块之shutil模块
python常用模块之shutil模块 shutil模块,高级的文件.文件夹.压缩包处理模块 1.shutil.copyfile(src,des[,length]):将文件内容拷贝到另一个文件 In ...
- 程序设计入门-C语言基础知识-翁恺-第二周:简单的计算程序-详细笔记(二)
目录 第二周:判断 2.1 比较 2.2 判断 2.3 课后习题 第二周:判断 2.1 比较 简单的判断语句: if(条件成立){ //执行代码 } 条件 计算两个值之间的关系,所以叫做关系运算 关系 ...
- NHibernate 01 [简述]
本节内容: 系列简述 NHibernate是什么? NHibernate好处? 1.系列简述 最近在项目中使用到NHibernate,所以记录下自己学习的内容和步骤. 2.NHibernate是什么? ...
- z=sin(xy)
看了<千年难题>,第一章是黎曼猜想.里面有两个我很感兴趣的问题:一是关于函数的图形表示方式,比如z=sin(xy)的图像,二是大数的因子分解方式. 专业的数学软件应该能够很容易的生成各种函 ...
- C++ 回调函数的几种策略
Stackoverflow中提出了这样一个问题:假设我们实现了一个User类,Library类,现在Library类中utility需要回调User中func方法,总结答案,常见的几种方法如下: 静态 ...
- JavaScript 中 OnLoad事件用法总结
还差一天现在手头上的这套网站就写完了,中午蹭了半天还是没睡好,干脆爬起来把今天上午写到的onload事件给整理一下. 一般用到比较多的就是初始化数据或者效果. 1.直接写在<body>标签 ...