机器学习总结(三)

补充上一节的决策边界绘制

所谓决策边界就是能够把样本正确分类的一条边界,主要有线性决策边界(linear decision boundaries)和非线性决策边界(non-linear decision boundaries)。

注意:这里用了两个特征值做预测,无论几个特征值最后都要映射到二维平面上,这里两个特征值更容易理解,x,y分别为特征值,z为预测的概率值,当概率值一样,就意味着这些点等高,我们可以画出一条线映射到二维平面,这样就是我们的决策边界

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
data = load_iris()  # 将类实例化
X = data['data'][:,(2,3)]  # 为了方便 我们只取其中两个特征来分析
y = (data['target'] == 2).astype(np.int)
log_res = LogisticRegression(C=10000)  # 惩罚
log_res.fit(X,y)  # 训练模型,将数据传入

# 构建坐标数据
# 我们需要使尽可能多的点落在坐标轴上,所以我们需要判断X中各维度数据的最大值及最小值
print(X[:,0].min(),X[:,0].max())
print(X[:,1].min(),X[:,1].max())
x0,x1 = np.meshgrid(np.linspace(2.9,7,500).reshape(-1,1),np.linspace(0.8,2.7,200).reshape(-1,1))
X_new = np.c_[x0.ravel(),x1.ravel()]
print(X_new.shape)
y_pro = log_res.predict_proba(X_new)

plt.figure(figsize=(10,4))
plt.plot(X[y==0,0],X[y==0,1],'bs')
plt.plot(X[y==1,0],X[y==1,1],'gs')
zz = y_pro[:,1].reshape(x0.shape)
contour = plt.contour(x0,x1,zz,cmap=plt.cm.brg)
plt.clabel(contour,inline=1)
plt.axis([2.9,7,0.8,2.7])
plt.text(3.5,1.5,'NOT Vir')
plt.text(6.5,2.3,'Vir')
plt.show()

 

多分类:

利用softmax进行多分类

可以理解为先放大差异(分子),在归一化

接下来同样是鸢尾花数据进行多分类

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
data = load_iris()  # 将类实例化
X = data['data']  # 用其全部特征
y = data['target']
print(X)
print(y)
softmax_res = LogisticRegression(multi_class='multinomial',solver='sag')  # 要加入一些参数
softmax_res.fit(X,y)
X_new = [[6,3,5,2]]  # 随机整了一组数据进行分类
softmax_res.predict_proba(X_new)
print(softmax_res.predict_proba(X_new))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值