机器学习总结(二)

逻辑回归:

虽说是回归,但是其本质是分类,逻辑回归是最经典的二分类算法、

机器学习算法选择:先逻辑回归,再用复杂的,能简单就简单

逻辑回归的决策边界可以是非线性的

sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。

对于传统逻辑回归,要对标签做变换,属于当前类别为1,不属于当前类别为0

决策边界的绘制:

1.构建坐标数据,合理的范围当中,根据实际训练时输入数据决定

2.整合坐标点,得到所有输入测试坐标点

3.预测,得到所有点的概率值

4.绘制等高线,完成决策边界

我们通过鸢尾花数据集采用逻辑回归进行训练: 

注意:我只采用了一个特征去训练预测,同时我们也是做的二分类,将另一个标签给转换了

 我采用的是sklearn强大的包,非常好用,传统的机器学习步骤,包括数据处理等等,sklearn好多已经搞好了,我这里用的是官方数据集,当然如果用自己数据集需要额外补充

 这是原始数据csv版本

 

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
data = load_iris()  # 将类实例化
print(list(data.keys()))  # 打印数据集里面的属性
print(data.DESCR)  # 打印数据集详细信息
print(list(data.target_names))
X = data['data'][:,3:]  # 为了方便 我们只取其中一个特征来分析
y = (data['target'] == 2).astype(np.int)  # 我们只是用逻辑回归简单做个预测,所以不做三分类预测了,只做一个二分类预测,这里将标签值为2的转换为1,这样标签就只有0,1了,属于二分类
print(y)
log_res = LogisticRegression()
log_res.fit(X,y)  # 训练模型,将数据传入
X_new = np.linspace(0,3,1000).reshape(-1,1)  # 因为我们只用了一个特征,所以也要构造一个一维矩阵来做预测
y_proba = log_res.predict_proba(X_new)
y_predict = log_res.predict(X_new)
print(y_proba)  # 预测概率
print(y_predict)  # 预测标签

 对得出的结果进行可视化展示代码部分

# 可视化展示
plt.figure(figsize=(10,8))
decision_boundary = X_new[y_proba[:,1]>=0.5][0]
plt.plot([decision_boundary,decision_boundary],[-1,2],'k:',linewidth = 2)
plt.plot(X_new,y_proba[:,1],'g--',label = 'Iris-virginica')
plt.plot(X_new,y_proba[:,0],'b--',label = 'Not Iris-virginica')
plt.arrow(decision_boundary,0.08,-0.3,0,head_width=0.05,head_length=0.1,fc='b',ec='b')
plt.arrow(decision_boundary,0.92,0.3,0,head_width=0.05,head_length=0.1,fc='g',ec='g')
plt.text(decision_boundary+0.02,0.15,'Decision Boundary',fontsize=16,color='k',ha='center')
plt.xlabel('Petal.Width',fontsize=16)
plt.ylabel('y_proba',fontsize=16)
plt.legend(loc='center left',fontsize=16)
plt.axis([0,3,-0.02,1.02])
plt.show()

 

补充:传统的逻辑回归并不是不可以做多分类,一种简单的方法就是多次利用逻辑回归,每一次都属于一个二分类。或者就是利用Softmax进行多分类,具体请见下一篇博客 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值