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_02_概述
一.前言 UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明.可视化.和编制文档的一种标准语言 二.分类 UML 的核心是图表,大致可以将 ...
- LeetCode OJ:Implement strStr()(实现子字符串查找)
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- 2018-2019-2 网络对抗技术 20165210 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165210 Exp4 恶意代码分析 一.实验目标 首先是监控你自己系统的运行状态,看有没有可疑的程序在运行. 其次是分析一个恶意软件,就分析Exp2或Exp ...
- react 问题
安装依赖报错问题 可能需要按顺序安装, 不能cnpm npm 混合安装, 参考react项目入门 react an ...
- 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/74161115 引言 最近在测试EasyNVR ...
- I.MX6 linux tslib Corrupt calibration data
I.MX6 linux tslib Corrupt calibration data 一.tslib出错 Corrupt calibration data 二.解决方法: ...... if [ -f ...
- 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)
目录 第六章:数组 6-1 数组 6-2 数组计算 6.3 课后习题 第六章:数组 6-1 数组 题目:让用户输入一组整数以-1结束输入,算出这组数的平均值,并且输出大于平均值的数. 我们需要记录用户 ...
- Xcode ARC需要什么版本的环境支持
Mac OS X v10.6 和 v10.7 (64位应用) 的Xcode 4.2以上版本支持ARC,iOS 4 和 iOS 5 下ARC都能工作,但Weak不支持Mac OS X v10.6 和 i ...
- BestCoder Round #1 第二题 项目管理
// 第二题 我记得很久很久很久以前看过这样的题目,忘记是哪的区域赛了 // 记得有人说和节点度数有关,我记不清了,反正当时完全不懂 // 然后我想了想,估计就是更新节点度数有关,YY出来可能只要更新 ...
- jquery 给新增的addClass 使用css样式
假如有一个情况,当导航url找不到相同的地址,就会出现找不到地址,高亮当前导航不出现 解决 办法 记得使用文档载入完成后执行的函数. 因为 .current 是 addClass 新增的class $ ...