机器学习——用鸢尾花数据集画P-R曲线和ROC曲线
P-R曲线获取鸢尾花数据集from sklearn import datasetsimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']# 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False# 用来正常显示负号#从4.5的标准开始iris = dat
·
P-R曲线
获取鸢尾花数据集
from sklearn import datasets
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
#从4.5的标准开始
iris = datasets.load_iris() # iris是一个字典集
我们去每个数据第一个元素来操作,去前100的数据作为训练集,每次的步长去0.1,经过观察,前一百,数据没有超过7的,取7作为最大的数。
from sklearn import datasets
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
#从4.5的标准开始
iris = datasets.load_iris() # iris是一个字典集
P=[] #查准率
R=[] #查全率
num=4.5 #判别标准
for it in range(1,26):
num+=0.1
TP = 0
FN = 0
FP = 0
TN = 0
for i in range(1, 100):
# 小于num认为他是对的
if(iris.data[i][0]<=num):
if(iris.target[i]==0):
TP+=1
else:
FN+=1
else:
if(iris.target[i]==1):
TN+=1
else:
FP+=1
chazhun=TP / (TP + FP)
chaquan=TP / (TP + FN)
print(TP," ",FN," ",FP," ",TN)
P.append(chazhun)
R.append(chaquan)
print(P)
print(R)
plt.figure(figsize=(8,6))
plt.plot(R,P,color="red",linestyle='--')
plt.title("P-R曲线")
plt.xlabel("查全率")
plt.ylabel("查准率")
# plt.grid(True,linestyle='--',color="red",alpha=0.5)
plt.show()
运行效果:
ROC曲线
和上面一样,还是区每个数据的第一个元素来操作,7位最大数,步长为0.1,总之沿用上面的思路。
from sklearn import datasets
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
#从4.5的标准开始
iris = datasets.load_iris() # iris是一个字典集
TPR=[] #真正例率
FPR=[] #假正例率
num=4.5 #判别标准
for it in range(1,26):
num+=0.1
TP = 0
FN = 0
FP = 0
TN = 0
for i in range(1, 100):
# 小于num认为他是对的
if(iris.data[i][0]<=num):
if(iris.target[i]==0):
TP+=1
else:
FN+=1
else:
if(iris.target[i]==1):
TN+=1
else:
FP+=1
print(TP," ",FN," ",FP," ",TN)
TPR.append(TP/(TP+FN))
FPR.append(FP/(TN+FP))
print(TPR)
print(FPR)
plt.figure(figsize=(8,6))
plt.plot(FPR,TPR,color="red",linestyle='--')
plt.title("ROC曲线")
plt.xlabel("假正例率")
plt.ylabel("真正例率")
# plt.grid(True,linestyle='--',color="red",alpha=0.5)
plt.show()
运行效果:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)