python隨機分配 python 隨機分類

2021-10-11 20:36:29 字數 3228 閱讀 6919

#encoding:utf-8

import pandas as pd

import numpy as np

from sklearn import datasets,linear_model

from sklearn.metrics import roc_curve,auc

import pylab as pl

from matplotlib.pyplot import plot

def confusionmatrix(predicted,actual,threshold):

if len(predicted)!=len(actual):return -1

tp = 0.0

fp = 0.0

tn = 0.0

fn = 0.0

for i in range(len(actual)):

if actual[i]>0.5:

if predicted[i]>threshold:

tp += 1.0

else:

fn += 1.0

else:

if predicted[i]

tn += 1.0

else:

fp += 1.0

rtn = [fp,fn,fp,tn]

return rtn

#獲取資料

rockdata = open('sonar.all-data')

xlist =

labels =

#將標籤轉換成數值,m轉換成1.0,r轉換為0.0

for line in rockdata:

row = line.strip().split(",")

if(row[-1] =='m'):

else:

row.pop()

floatrow = [float(num) for num in row]

print labels

#獲取資料的行數,通過對3的求餘,將資料劃分為2個子集,1/3的測試集,2/3的訓練集

indices = range(len(xlist))

xlisttest = [xlist[i] for i in indices if i%3==0]

xlisttrain = [xlist[i] for i in indices if i%3!=0]

labelstest = [labels[i] for i in indices if i%3==0]

labelstrain = [labels[i] for i in indices if i%3!=0]

#將列表轉換成陣列

xtrain = np.array(xlisttrain)

ytrain = np.array(labelstrain)

xtest = np.array(xlisttest)

ytest = np.array(labelstest)

#**模型

rocksvminesmodel = linear_model.linearregression()

#訓練資料

rocksvminesmodel.fit(xtrain,ytrain)

# **訓練資料

trainingpredictions = rocksvminesmodel.predict(xtrain)

print ("---------",trainingpredictions[0:5],trainingpredictions[-6:-1])

#生成訓練資料的混淆矩陣

confusionmattrain = confusionmatrix(trainingpredictions,ytrain,0.5)

print confusionmattrain

#**測試資料

testpredictions = rocksvminesmodel.predict(xtest)

#生成測試資料的混淆矩陣

confusiontest = confusionmatrix(testpredictions,ytest,0.5)

print confusiontest

#通過roc_curve函式計算fpt,tpr,並計算roc_auc,auc越高代表越好

fpr,tpr,thresholds = roc_curve(ytrain,trainingpredictions)

roc_auc = auc(fpr,tpr)

print roc_auc

#生成訓練集上的roc曲線

#plot roc curve

pl.clf()#清楚圖形,初始化圖形的時候需要

pl.plot(fpr,tpr,label='roc curve (area=%0.2f)' %roc_auc)#畫roc曲線

pl.plot([0,1],[0,1],'k-')#生成對角線

pl.xlim([0.0,1.0])#x軸範圍

pl.ylim([0.0,1.0])#y軸範圍

pl.xlabel('false positive rate')#x軸標籤顯示

pl.ylabel('true positive rate')#y軸標籤顯示

pl.title('in sample roc rocks versus mines')#標題

pl.legend(loc="lower left")#圖例位置

pl.show()

#生成測試集上的roc曲線

fpr,tpr,thresholds = roc_curve(ytest,testpredictions)

roc_auc = auc(fpr,tpr)

print roc_auc

#plot roc curve

pl.clf()

pl.plot(fpr,tpr,label='roc curve (area=%0.2f)' %roc_auc)

pl.plot([0,1],[0,1],'k-')

pl.xlim([0.0,1.0])

pl.ylim([0.0,1.0])

pl.xlabel('false positive rate')

pl.ylabel('true positive rate')

pl.title('in sample roc rocks versus mines')

pl.legend(loc="lower right")

pl.show()

訓練集上的roc曲線

測試集上的roc曲線

python 隨機給老師分配辦公室

import random offices teachers 張老師 趙老師 高老師 劉老師 周老師 王老師 吳老師 for teacher in teachers office num random.randint 0,2 offices office num num 1for office in...

python分配 Python分配解構

根據dis,他們都被編譯成相同的位元組碼 def f1 line a,b,c line.split def f2 line a,b,c line.split def f3 line a,b,c line.split import dis dis.dis f1 2 0 load fast 0 line...

python隨機漫步 Python 隨機漫步

建立randomwalk 類 我們將使用python來生成隨機漫步資料,再使用matplotlib以引入矚目的方式將這些資料呈現出來 首先建立類randomwalk from random importchoiceclassrandomwalk 乙個生成隨機漫步資料的類 def init self,...