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 加入 ...
随机推荐
- 平衡二叉树(AVL)的实现,附可运行C语言代码
最近几月一直在自学C语言和数据结构,先是写了排序二叉树,觉得平衡二叉树作为一个经典数据结构,有必要实现一下. 网上看了些资料,在AVL和红黑树之间考虑,最后个人还是倾向于AVL. 不同于标准AVL的是 ...
- PostgreSQL 9.6 同步多副本、remote_apply记录
摘自:https://yq.aliyun.com/articles/61274 同步多副本配置方法 参数配置如下 synchronous_standby_names (string) 支持两种写法 n ...
- Linux:grub密码设置与修改
grub密码设置与修改 默认GRUB启动参数可以的进入单用户模式从而修改root密码,如果想要给GRUB菜单设置密码,可以修改/etc/grub.conf文件 (/boot/grub/grub.con ...
- Java之JVM逃逸分析
引言: 逃逸分析(Escape Analysis)是众多JVM技术中的一个使用不多的技术点,本文将通过一个实例来分析其使用场景. 概念 逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配 ...
- Photon——Feature Overview 功能概述
Photon——Feature Overview 功能概述 Feature Overview 功能概述 Photon is a real-time socket server and ...
- jQuery AJAX 与 jQuery 事件
jQuery 本身即是为事件处理而特别设计的,jQuery 事件处理方法是 jQuery 中的核心函数. $(function() { ... }); 是如下格式的缩写: $(document).re ...
- 【排序】冒泡排序,C++实现
原创文章,转载请注明出处! 博客文章索引地址 博客文章中代码的github地址 # 基本思想(从小到大排序) 对于给定的n个元素,从第一个元素开始,依次对相邻的两个元素进行比较,当前面的记 ...
- sersync2 文件的实时同步备份
|——需求: 监控192.168.9.5[主] 下的 /data/vmeipai 目录 --> 同步到 192.168.12.8 [备] 下的 /data/vmeipai 目录 |——网络拓 ...
- 对Json的各种遍历方法
慎用for in函数(有可能由于原型链的问题导致遍历问题): 如果要是用for in 一定要使用if (obj1.hasOwnProperty(key)) {}先做判断 解决方法 :1.eval() ...
- Balanced Substring
You are given a string s consisting only of characters 0 and 1. A substring [l, r] of s is a string ...