重修-龙珠计划机器学习训练营task1-part2学习笔记
文章标题:龙珠计划机器学习训练营task1-part2学习笔记
一、学习知识点概要
利用鸢花数据(iris)进行逻辑回归方法的训练,该数据集一共包含5个变量,其中4个特征变量,1个目标分类变量。共有150个样本,目标变量为 花的类别 其都属于鸢尾属下的三个亚属,分别是山鸢尾 (Iris-setosa),变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。包含的三种鸢尾花的四个特征,分别是花萼长度(cm)、花萼宽度(cm)、花瓣长度(cm)、花瓣宽度(cm),这些形态特征在过去被用来识别物种。
二、学习内容
Part2 :基于鸢尾花(iris)数据集的逻辑回归分类实践
Step1:库函数导入
Step2:数据读取/载入
Step3:数据信息简单查看
Step4:可视化描述
Step5:利用 逻辑回归模型 在二分类上 进行训练和预测
Step5:利用 逻辑回归模型 在三分类(多分类)上 进行训练和预测
Part2:
## 基础函数库,鸢尾花数据分析
import numpy as np
import pandas as pd
## 绘图函数库
import matplotlib.pyplot as plt
import seaborn as sns
## 我们利用 sklearn 中自带的 iris 数据作为数据载入,并利用Pandas转化为DataFrame格式
from sklearn.datasets import load_iris
data = load_iris() #得到数据特征
iris_target = data.target #得到数据对应的标签
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names) #利用Pandas转化为DataFrame格式
## 利用.info()查看数据的整体信息
iris_features.info()
## 进行简单的数据查看,我们可以利用 .head() 头部.tail()尾部
iris_features.head()
## 其对应的类别标签为,其中0,1,2分别代表’setosa’, ‘versicolor’, 'virginica’三种不同花的类别。
iris_target
## 合并标签和特征信息
iris_all = iris_features.copy() ##进行浅拷贝,防止对于原始数据的修改
iris_all[‘target’] = iris_target
## 特征与标签组合的散点可视化
sns.pairplot(data=iris_all,diag_kind=‘hist’, hue= ‘target’)
#kind:用于控制非对角线上图的类型,可选’scatter’与’reg’
#diag_kind:用于控制对角线上的图分类型,可选’hist’与’kde’
plt.show()
for col in iris_features.columns:
sns.boxplot(x=‘target’, y=col, saturation=0.5,palette=‘pastel’, data=iris_all)
plt.title(col)
plt.show()
# 选取其前三个特征绘制三维散点图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111, projection=‘3d’)
iris_all_class0 = iris_all[iris_all[‘target’]==0].values
iris_all_class1 = iris_all[iris_all[‘target’]==1].values
iris_all_class2 = iris_all[iris_all[‘target’]==2].values
# ‘setosa’(0), ‘versicolor’(1), ‘virginica’(2)
ax.scatter(iris_all_class0[:,0], iris_all_class0[:,1], iris_all_class0[:,2],label=‘setosa’)
ax.scatter(iris_all_class1[:,0], iris_all_class1[:,1], iris_all_class1[:,2],label=‘versicolor’)
ax.scatter(iris_all_class2[:,0], iris_all_class2[:,1], iris_all_class2[:,2],label=‘virginica’)
plt.legend()
plt.show()
## 为了正确评估模型性能,将数据划分为训练集和测试集,并在训练集上训练模型,在测试集上验证模型性能。
from sklearn.model_selection import train_test_split
## 选择其类别为0和1的样本 (不包括类别为2的样本)
iris_features_part = iris_features.iloc[:100]
iris_target_part = iris_target[:100]
## 测试集大小为20%, 80%/20%分
x_train, x_test, y_train, y_test = train_test_split(iris_features_part, iris_target_part, test_size = 0.2, random_state = 2020)
## 从sklearn中导入逻辑回归模型
from sklearn.linear_model import LogisticRegression
## 定义 逻辑回归模型
clf = LogisticRegression(random_state=0, solver=‘lbfgs’)
# 在训练集上训练逻辑回归模型
clf.fit(x_train, y_train)
## 查看其对应的w
print(‘the weight of Logistic Regression:’,clf.coef_)
## 查看其对应的w0
print(‘the intercept(w0) of Logistic Regression:’,clf.intercept_)
## 在训练集和测试集上分布利用训练好的模型进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
from sklearn import metrics
## 利用accuracy(准确度)【预测正确的样本数目占总预测样本数目的比例】评估模型效果
print(‘The accuracy of the Logistic Regression is:’,metrics.accuracy_score(y_train,train_predict))
print(‘The accuracy of the Logistic Regression is:’,metrics.accuracy_score(y_test,test_predict))
## 查看混淆矩阵 (预测值和真实值的各类情况统计矩阵)
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print(‘The confusion matrix result:\n’,confusion_matrix_result)
# 利用热力图对于结果进行可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap=‘Blues’)
plt.xlabel(‘Predicted labels’)
plt.ylabel(‘True labels’)
plt.show()
## 测试集大小为20%, 80%/20%分
x_train, x_test, y_train, y_test = train_test_split(iris_features, iris_target, test_size = 0.2, random_state = 2020)
# random_state是一个随机种子,是在任意带有随机性的类或函数里作为参数来控制随机模式。当random_state取某一个值时,也就确定了一种规则。
## 定义 逻辑回归模型
clf = LogisticRegression(random_state=0, solver=‘lbfgs’)
# solver参数决定了我们对逻辑回归损失函数的优化方法,有4种算法可以选择,分别是:*
# a) liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。*
# b) lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。*
# c) newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。*
#d) sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。
# 在训练集上训练逻辑回归模型
clf.fit(x_train, y_train)
## 查看其对应的w
print(‘the weight of Logistic Regression:\n’,clf.coef_)
## 查看其对应的w0a
print(‘the intercept(w0) of Logistic Regression:\n’,clf.intercept_)
## 由于这个是3分类,所有我们这里得到了三个逻辑回归模型的参数,其三个逻辑回归组合起来即可实现三分类。
## 在训练集和测试集上分布利用训练好的模型进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
## 由于逻辑回归模型是概率预测模型(前文介绍的 p = p(y=1|x,\theta)),所有我们可以利用 predict_proba 函数预测其概率
train_predict_proba = clf.predict_proba(x_train)
test_predict_proba = clf.predict_proba(x_test)
# predict_proba返回的是一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的概率和为1。
print(‘The test predict Probability of each class:\n’,test_predict_proba)
## 其中第一列代表预测为0类的概率,第二列代表预测为1类的概率,第三列代表预测为2类的概率。
## 利用accuracy(准确度)【预测正确的样本数目占总预测样本数目的比例】评估模型效果
print(‘The accuracy of the Logistic Regression is:’,metrics.accuracy_score(y_train,train_predict))
print(‘The accuracy of the Logistic Regression is:’,metrics.accuracy_score(y_test,test_predict))
## 查看混淆矩阵
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print(‘The confusion matrix result:\n’,confusion_matrix_result)
# 利用热力图对于结果进行可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap=‘Blues’) #map 热力图颜色
plt.xlabel(‘Predicted labels’)
plt.ylabel(‘True labels’)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5,5,0.01)
y = 1/(1+np.exp(-x))
plt.plot(x,y)
plt.xlabel(‘z’)
plt.ylabel(‘y’)
plt.grid() # 显示网格线 1=True=默认显示;0=False=不显示
plt.show()
三、学习问题与解答
(1)clf.coef_ 是一个3×2(n_class, n_features)的矩阵,clf.intercept_是一个1×3的矩阵(向量)。Coef:一次项系数,intercept_应该是截距。
四、学习思考与总结
逻辑回归理论部分参考:https://zhuanlan.zhihu.com/p/74874291
重修-龙珠计划机器学习训练营task1-part2学习笔记相关推荐
- 重修-龙珠计划机器学习训练营task3-LightGBM学习笔记
文章标题:龙珠计划机器学习训练营task3-LightGBM学习笔记 一.学习知识点概要 LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届 ...
- 天池龙珠计划——机器学习训练营 Task1
目录 机器学习算法(一): 基于逻辑回归的分类预测 前言 逻辑回归介绍 实战 基本参数 iris数据集实战 机器学习算法(一): 基于逻辑回归的分类预测 前言 笔记,主要记录阿里云天池龙珠训练营机器学 ...
- 【天池龙珠计划寒假训练营】python学习笔记(二):数据结构大汇总
六. 列表的定义 列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, ..., 元素n] . 关键点是「中括号 []」和「逗号 ,」 中括号 把 ...
- 【天池龙珠计划寒假训练营】python学习笔记(四):利用Pandas分析美国选民总统喜好度
一.数据准备 1.1 数据集来源介绍 1. 所有候选人信息 该文件为每个候选人提供一份记录,并显示候选人的信息.总收入.从授权委员会收到的转账.付款总额.给授权委员会的转账.库存现金总额.贷款和债务以 ...
- 【天池龙珠计划寒假训练营】python学习笔记(三):从函数到高级魔法方法
十二. 函数与Lambda表达式 12.1 函数 还记得 Python 里面"万物皆对象"么?Python 把函数也当成对象,可以从另一个函数中返回出来而去构建高阶函数,比如: 参 ...
- 天池龙珠计划机器学习训练营机器学习基础知识学习笔记--Task03
天池龙珠计划机器学习训练营–Task03重点记录 LightGBM的介绍 LightGBM的主要优点: 简单易用.提供了主流的Python\C++\R语言接口,用户可以轻松使用LightGBM建模并获 ...
- python学习路线----天池龙珠计划Python训练营task1~3
本文对python语法的查漏补缺,自用,在此对python中不常使用或者是容易遗忘的知识点做出归纳.龙珠训练营可以让同学入门Python深度学习或者数据分析方向. Task1: 如果对一个列表,既要遍 ...
- 天池龙珠计划——机器学习训练营 Task3
目录 前言 LightGBM介绍 实战 前言 笔记,记录龙珠机器学习训练营Task3,关于lightgbm的学习.与前两个阶段一样,主要重心放在实际应用上,毕竟学习这个主要是用于一些比赛. Light ...
- Python基础入门(中)--阿里云天池龙珠计划python训练营
一.学习内容概况 学习地址:天池龙珠计划python训练营 今天主要学习到的内容有: 列表 元祖 字符串 字典 集合 序列 二.具体学习内容 1.列表 简单数据类型 整型<class 'int' ...
最新文章
- XINGNET交换机病毒防范
- 第一篇:web之前端之html
- CV之路 —— Opencv学习
- 计算广告学(Computational Advertising)CA
- 通过WM_COPYDATA消息完成进程间通信
- mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储
- Struts2_2_解决配置文件冗余_动作类对象数据封装_数据类型转换_表单数据信息提示
- 关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题
- 修改oracle用户密码永不过期
- leetcode题解62-不同路径
- java 获取文件大小_阿里Java后端开发面经,面试官都替我感到绝望
- 8202v/8202ka/8202kd/8202rd 无线游戏手柄方案
- matlab实现直方图均衡化
- 植物大战僵尸模式修改
- Android-蓝牙AVRCP 以及 绝对音量(absolute volume)概述-A2dp-hfp
- zend studio html乱码,zend studio出现乱码如何解决
- ffmpeg 视频音频合成新视频
- HiWork告诉你:拿什么来拯救你,我的时间
- 修复IE默认主页——注册表篇
- debug基本命令及全称