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 加入 ...
随机推荐
- UML_00_资源帖
一.官方文档 https://www.uml-diagrams.org/ https://www.omg.org/spec/UML/ 二.精选资料 UML教程-w3cschool UML建模图实战笔记 ...
- 【javascript基础】 广告嵌套document.write的非iframe方式的延迟加载
用ControlJS优化阿里妈妈广告http://ued.taobao.com/blog/2011/03/controljs-alimama/让document.write的广告无阻塞的加载http: ...
- php5.4.0以后加入trait实现代码复用【摘录】
在http://www.php.net/manual/zh/language.oop5.traits.php 查看了一下5.4.0提供的特性trait顺便做一个标记(总结): 首先要明确trait和类 ...
- Xcode Server (Xcode9)搭建CI
Xcode 9将Xcode Server集成进来了,这是Xcode一个新特性,不用去单独下载server了,server可以用来做CI.自动化Test等等.这里主要介绍搭建CI,相当简单 打开开关,新 ...
- iOS 阶段学习第六天笔记(数组)
iOS学习( ...
- Linux .o a .so .la .lo的区别
o: 编译的目标文件a: 静态库,其实就是把若干o文件打了个包so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息la: 使用libtool编译出 ...
- Android程序员学WEB前端(4)-HTML(4)-注册页面-Sublime
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76576031 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 注册页面1: <! ...
- [置顶]
Isolation Forest算法实现详解
本文算法完整实现源码已开源至本人的GitHub(如果对你有帮助,请给一个 star ),参看其中的 iforest 包下的 IForest 和 ITree 两个类: https://github.co ...
- List connected users–similar to task manager
class Program { [DllImport("wtsapi32.dll")] static extern IntPtr WTSOpenServer([MarshalAs( ...
- sift特征简述
参考文献:http://blog.csdn.net/abcjennifer/article/details/7639681 分为几个步骤: 1. 构建尺度空间 2. LoG近似DoG找到关键点< ...