02_09 python机器学习_第二章监督学习_分类器的不确定估计

第二章监督学习_分类器的不确定估计

这章的内容主要讲的是模型内部用于判断数据类别的方式.
文中提到两种, 分别是决策函数[decision_function]和决策概率[predict_proba]
文中会介绍这两种方式在处理二分类和多分类数据时的原理.
虽然我也不知道为什么要单独拎出来讲这个,但还是先了解一下吧.

01 决策函数[decision_function]

二分类问题中:
决策函数[decision_function]的做法是:

  1. 计算每一各数据样本,样本的特征值最后会得到一个结果, 即一个样本一个结果
  2. 以0为分界点,分成[<0]和[>=0]两类
  3. [<0]部分永远是二分类种的第一类
import numpy as np
# 梯度提升决策树
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_circles
from sklearn.model_selection import train_test_split

# 创建二分类数据, 每类数据都是一个闭合环形. 想象一下射击用的靶
# noise:
#     用于控制环形数据的精细度, (理解成像素点比较好说明),数据越小,点约密,环形月平滑
# factor:
#     控制两个环形数据间的距离, 数据越大两个环越接近
X, y = make_circles(noise=0.25, factor=0.5, random_state=1)
y_name = np.array(["blue", "red"])[y]

# In [45]: y
# Out[45]: 
# array([1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1,
#        1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0,
#        1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1,
#        0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
#        1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0], dtype=int64)
# In[46]: y_name
# Out[46]:
# array(['red', 'red', 'blue', 'red', 'red', 'blue', 'blue', 'red', 'red',
#        'red', 'red', 'blue', 'red', 'red', 'red', 'blue', 'blue', 'blue',
#        'red', 'blue', 'blue', 'red', 'red', 'red', 'blue', 'blue', 'red',
#        'blue', 'blue', 'blue', 'red', 'red', 'red', 'red', 'red', 'blue'

X_train, X_test, y_train_named, y_test_named, y_train, y_test = \
    train_test_split(X, y_name, y, random_state=0)

gbrt = GradientBoostingClassifier(random_state=0)
gbrt.fit(X_train, y_train_named)

# 决策函数为每一个数据样本都计算出一个值,计算结果完全取决于数据样本,因此没有什么范围限制
# print(gbrt.decision_function(X_test))
# [ 4.13592603 -1.70169917 -3.95106099 -3.62609552  4.28986642  3.66166081
#  -7.69097179  4.11001686  1.10753937  3.40782222 -6.46255955  4.28986642
#   3.90156346 -1.20031247  3.66166081 -4.17231157 -1.23010079 -3.91576223
#   4.03602783  4.11001686  4.11001686  0.65709014  2.69826265 -2.65673274
#  -1.86776596]
#
# print(X_test.shape)
# (25, 2)
# print(gbrt.decision_function(X_test).shape)
# (25,)

# 模拟模型判断分类的过程
greater_zero = (gbrt.decision_function(X_test) > 0).astype(int)
# print (greater_zero)
# [1 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0]
pred = gbrt.classes_[greater_zero
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值