目录

  • 机器学习算法(一): 基于逻辑回归的分类预测
  • 前言
  • 逻辑回归介绍
  • 实战
    • 基本参数
    • iris数据集实战

机器学习算法(一): 基于逻辑回归的分类预测

前言

笔记,主要记录阿里云天池龙珠训练营机器学习部分的学习成果

逻辑回归介绍

逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,主要用于两分类问题(即输出只有两种,分别代表两个类别)。

回归模型中,y是一个定性变量,比如y=0或1,logistic方法主要应用于研究某些事件发生的概率。

优点:
● 速度快,适合二分类问题
● 简单易于理解,直接看到各个特征的权重
● 能容易地更新模型吸收新的数据
缺点:
● 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强
● 容易欠拟合,分类精度可能不高

实战

基本参数

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LogisticRegression
#这里导入了构建矩阵的numpy库、作图的plot和seaborn库、以及sklearn中线性模型的lr(逻辑回归)库
data = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
label = np.array([0, 0, 0, 1, 1, 1])
#这里构成了data(对应二维坐标上的六个点),label(表示data六个点对应的标签)
#可以看到共有0和1两种类型
lr = LogisticRegression()
lr = lr.fit(data, label)
#这里调用lr函数,并使用fit对data和label进行拟合
#其拟合方程为 y=w0+w1*x1+w2*x2
# 查看其对应模型的w
print('the weight of Logistic Regression:',lr_clf.coef_)# 查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)

# 可视化构造的数据样本点
plt.figure()
plt.scatter(data[:,0], data[:,1], c = label)#横轴为data矩阵0位元素,纵轴为1位元素,颜色根据label来分类
plt.title('Dataset')
plt.show()
#如下图,六个点分成了黑黄两类

# 可视化决策边界
plt.figure()
plt.scatter(data[:,0], data[:,1], c = label)
plt.title('Dataset')nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))z_proba = lr.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape)
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')plt.show()
#这里从横轴和纵轴的界限,构建等差矩阵x_grid和y_grid,使用拟合好的lr模型预测概率,并将所得概率为0.5(即分界点)的所有点画成线,成功将两类型的分界线画出

#现在我们新建两个点
new_data1 = np.array([[0, -1]])
new_data2 = np.array([[1, 2]])
#通过lr模型预测new1和new2的分类情况
new1_pre = lr.predict(new_data1)
new2_pre = lr.predict(new_data2)
#可以看到两个点分别属于0和1

#通过lr模型预测两个点的分布概率
new1_pro = lr.predict_proba(new_data1)
new2_pro = lr.predict_proba(new_data2)
#可以看到proba给出的是两种类型的所属概率,对于new1,属于0类的概率为0.695,属于1类的概率为0.304,new2同理

iris数据集实战

#依旧是导入使用的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#不同的是,此次的数据来自sklearn自带的iris数据集
from sklearn.datasets import load_iris
data = load_iris()
iris_target = data.target #得到数据对应的标签
iris_data = pd.DataFrame(data = data.data, columns = data.feature_names)
iris_data.head(5)
#查看数据集前五行,每一行代表一个花的所有属性,对应有sl、sw、pl、pw四个属性的值

pd.Series(iris_target).value_counts()
#查看iris种类的分布情况,共有0、1、2三类,每类占50

## 合并标签和特征信息
iris_all = iris_data.copy() ##进行浅拷贝,防止对于原始数据的修改
iris_all['target'] = iris_target
## 特征与标签组合的散点可视化
sns.pairplot(data = iris_all, diag_kind='hist', hue= 'target')
plt.show()
#绘制直方图,横纵轴都是四个label,类别为target的三种,生成4*4矩阵图

# 选取其前三个特征绘制三维散点图
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111, projection='3d')#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')#三坐标分别是values的0、1、2位元素
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()

#提取data和target的前两部分(label为0、1),4:1划分训练集和测试集
from sklearn.model_selection import train_test_split
X = iris_data.iloc[:100]
y = iris_target[:100]
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 2021)
#调用模型设置参数进行训练
lr = LogisticRegression(random_state=0, solver='lbfgs')
lr.fit(x_train, y_train)
#训练好后在train集合test集进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
from sklearn import metrics
#带哦用metrics库的acc,进行真实值与预测值的正确率检测
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))
#训练集回测结果和测试集测试结果都极为准确

#下面进行所有数据的三分类预测
x_train, x_test, y_train, y_test = train_test_split(iris_data, iris_target, test_size = 0.2, random_state = 2021)
clf = LogisticRegression(random_state=0, solver='lbfgs')
clf.fit(x_train, y_train)
## 在训练集和测试集上分布利用训练好的模型进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)# 利用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))
#回测正确率0.98,测试集正确率0.86

天池龙珠计划——机器学习训练营 Task1相关推荐

  1. 天池龙珠计划机器学习训练营机器学习基础知识学习笔记--Task03

    天池龙珠计划机器学习训练营–Task03重点记录 LightGBM的介绍 LightGBM的主要优点: 简单易用.提供了主流的Python\C++\R语言接口,用户可以轻松使用LightGBM建模并获 ...

  2. python学习路线----天池龙珠计划Python训练营task1~3

    本文对python语法的查漏补缺,自用,在此对python中不常使用或者是容易遗忘的知识点做出归纳.龙珠训练营可以让同学入门Python深度学习或者数据分析方向. Task1: 如果对一个列表,既要遍 ...

  3. 天池龙珠计划——机器学习训练营 Task3

    目录 前言 LightGBM介绍 实战 前言 笔记,记录龙珠机器学习训练营Task3,关于lightgbm的学习.与前两个阶段一样,主要重心放在实际应用上,毕竟学习这个主要是用于一些比赛. Light ...

  4. 【阿里云天池龙珠计划SQL训练营】SQL复习Task3

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 目录 Task03:复杂查询 ...

  5. 天池龙珠计划Python训练营task2

    天池龙珠计划Python训练营 Python 是一种通用编程语言,其在科学计算和机器学习领域具有广泛的应用.如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至 ...

  6. 【学习笔记】阿里云天池龙珠计划SQL训练营-Task06:综合练习题-10道经典题目

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容 链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql 练习题1: 请使用A股上市公司 ...

  7. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql” Task06学习笔记

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql" Task06学习笔 ...

  8. 阿里云天池龙珠计划SQL训练营Task03:复杂查询方法-视图、子查询、函数等

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 3.1 视图 我们先来看一个 ...

  9. 【阿里云天池龙珠计划SQL训练营】SQL复习Task2

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 目录 Task02:SQL基 ...

最新文章

  1. linux的变量用法
  2. 微信说中国人的国庆长假 境内游西湖外滩上榜
  3. 【python常见面试题】之python 中对list去重的多种方法
  4. 看完这篇,你应该知道什么是Linux了~
  5. velocity参数重新赋值_Velocity(5)——#set指令
  6. springdata jpa单表操作crud
  7. 40款精简活力fcpx标题字幕 mTitle Kinetic for Mac
  8. 基于MATLAB的图像压缩感知设计(含源文件)
  9. 笔记本电脑5年没清灰了_返利网5年估值腰斩,没了P2P六亿对赌难完成
  10. latex 学习资料
  11. win10如何截屏_win10系统电脑截屏的多种操作方法
  12. java源码依赖分析_Spring项目运行依赖spring-contex解析
  13. 真正支配整个世界的十种算法
  14. java.lang.ClassCastException: $Proxy8 cannot be cast to org.hihernate.lob.SerialzableClob
  15. html怎么设置展开li,html网页代码常用ul li列表布局标签。
  16. 【MTK Sensor2.0】SCP与AP数据流分析
  17. 比较结构的关联词(一)
  18. SQLServer笔试题
  19. RecycleView的 Scrapped or attached views may not be recycled错误原因研究
  20. validate.js 插件表单校验

热门文章

  1. 三维技术撬动高精尖脉搏,三维扫描深入科技肌理
  2. 华为鸿蒙概念机,华为巅峰之作,P50概念机大曝光:120Hz+鸿蒙OS!
  3. arcgis海图相关
  4. 电子围栏系统知识大全
  5. 基于J2ME蓝牙的手机与计算机通信系统设计1
  6. $forceUpdate强制刷新
  7. FFMPEG源码分析(一)
  8. GreenDao升级
  9. 【Unity3D】正交视图与透视视图 ( 正交视图概念 | 透视视图概念 | 观察点 | 正交视图作用 | 摄像机广角设定 | 透视畸变效果 )
  10. 关于文件夹同步的那点事