机器学习2--逻辑回归(案列)

糖尿病数据线性回归预测

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
diabetes=load_diabetes()
data=diabetes['data']
target=diabetes['target']
feature_names=diabetes['feature_names']
data.shape
df = pd.DataFrame(data, columns=feature_names)
df.head()
# 抽取训练数据和预测数据
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
x_train.shape,x_test.shape
# 创建模型
from sklearn.linear_model import LinearRegression
linear=LinearRegression()
linear.fit(x_train,y_train)
# 预测
y_pred=linear.predict(x_test)
y_pred
# 得分: 回归的得分很低
#linear.score(x_test,y_test)
### 线性回归评估指标
#- mean_squared_error 均方误差
from sklearn.metrics import mean_squared_error as mse
# 均方误差
mse(y_test,y_pred)
#### 求线性方程: y = WX + b 中的W系数和截距b
# w系数
linear.coef_
# 10个特征 就有10个系数
# b截距
linear.intercept_
#### 研究每个特征和标记结果之间的关系.来分析哪些特征对结果影响较大
plt.figure(figsize=(5*4, 2*4))

for i, col in enumerate(df.columns):
    
    # 每一列数据
    data2 = df[col].copy()
    
    # 画子图
    ax = plt.subplot(2, 5, i+1)
    ax.scatter(data2, target)

    # 线性回归:对每一个特征进行回归分析
    linear2 = LinearRegression()
    linear2.fit(df[[col]], target)
    
    # 每个特征的系数w和截距b
    # y = wx + b
    w = linear2.coef_[0]
    b = linear2.intercept_
    # print(w, b)
    
    # 画直线
    x = np.linspace(data2.min(), data2.max(), 2)
    y = w * x + b
    ax.plot(x, y, c='r')
    
    # 特征
    score = linear2.score(df[[col]], target)  # 模型得分
    ax.set_title(f'{col}: {round(score, 3)}', fontsize=16)
    
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
### 抛物线函数
# 抛物线函数
# f(x) = (x - 2)²  + 5

# Python函数
f=lambda x:(x-2)**2+5
# 画图
x=np.linspace(-2,6,100)
y=f(x)
plt.plot(x,y)
#### 使用梯度下降算法 求 当x为多少时,函数f(x)的值最小
# ①对目标函数求导; 
# ②循环对参数更新;
# ①对目标函数求导; 

# 抛物线函数
# f(x) = (x - 2)²  + 5

# 求导数
#  dx = 2x - 4
d = lambda x: 2 * x - 4
# ②循环对参数更新;
θ = 6
# 学习率 lr  : learning_rate 
lr=0.03
# 最大迭代次数
max_iter=100
θ_list = [θ]
# 循环
for i in range(max_iter):
    θ = θ - lr * d(θ)
    θ_list.append(θ)
θ_array = np.array(θ_list)
# 画图
x=np.linspace(-2,6,100)
y=f(x)
plt.figure(figsize=(4,5))
plt.plot(x,y)
plt.plot(θ_array,f(θ_array), marker='*')



Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,用于两分类问题(即输出只有两种)。首先需要先找到一个预测函数(h),显然,该函数的输出必须是两类值(分别代表两个类别),所以利用了*Logistic函数(或称为Sigmoid函数)*

#1实战手写数字识别
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 逻辑回归: 分类
from sklearn.linear_model import LogisticRegression
# 使用KNN与Logistic回归两种方法
from sklearn.datasets import load_digits
digits=load_digits()
digits
data=digits['data']
target=digits['target']
feature_names=digits['feature_names']
target_names=digits['target_names']
imges=digits['images']
data.shape
imges.shape
pd.Series(target).unique()
feature_names
#划分数据集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2)
#使用逻辑回归
#创建模型,训练和预测
# C=1.0 :  越大表示越严格,对训练数据拟合更好,可能导致过拟合
#          越小表示不严格,对训练数据拟合不好,可能导致欠拟合
#
# solver : 逻辑回归的损失函数的一种进行优化的算法
#      {'lbfgs', 'liblinear', 'newton-cg', 'newton-cholesky', 'sag', 'saga'},
#    solver='lbfgs' 默认值
#    liblinear:一般适用于小数据集
#    sag,saga: 一般使用于大数据集,速度更快
#    其他是中等数据集
# 
#  max_iter=100: 最大迭代次数
#  
#  n_jobs=-1  表示使用的CPU核数,多进程处理,一般设置为CPU核数,-1表示时使用所有处理器
lr=LogisticRegression(C=1.0,solver='lbfgs',max_iter=100,n_jobs=-1)
#训练
%timeit lr.fit(x_train,y_train)
# 预测
%timeit lr.predict(x_test)
# 得分
lr.score(x_train,y_train)
lr.score(x_test,y_test)




# 导包使用datasets.make_blobs创建一系列点
#from sklearn.datasets import make_blobs
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_blobs
# n_samples=100,  样本数,行数
# n_features=2,   特征数,列数
# centers=None,  几堆点,默认是3
# cluster_std=1.0,  离散程度
data,target=make_blobs(n_samples=300,centers=4,cluster_std=1.0)
plt.scatter(data[:,0],data[:,1],c=target)
#设置三个中心点,随机创建100个点
#创建机器学习模型(逻辑斯蒂回归),训练数据
lr=LogisticRegression(max_iter=10000)  
lr.fit(data,target)
lr.score(data,target)
#分类后,并绘制边界图
x=np.array([1,2,3,4])
y=np.array([5,6,7,8,9])
X, Y = np.meshgrid(x, y)
# 让X,Y相交
XY=np.c_[X.reshape(-1),Y.reshape(-1)]
#  分别对x轴和y轴的数据等分成1000份
#  分别对x轴和y轴的数据等分成1000份
x = np.linspace(data[:, 0].min(), data[:, 0].max(), 1000)
y = np.linspace(data[:, 1].min(), data[:, 1].max(), 1000)

X, Y = np.meshgrid(x, y)

# ravel(): 扁平化
XY = np.c_[X.ravel(), Y.ravel()]
XY.shape
# 提供测试数据: XY
y_pred=lr.predict(XY)
y_pred.shape
# 画边界图
plt.pcolormesh(X,Y,y_pred.reshape(1000,1000))
plt.scatter(data[:,0],data[:,1],c=target,cmap='rainbow')

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/381920.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【知识整理】招人理念、组织结构、招聘

1、个人思考 几个方面: 新人:选、育、用、留 老人:如何甄别? 团队怎么演进? 有没有什么注意事项 怎么做招聘? 2、 他人考虑 重点: 1、从零开始,讲一个搭建团队的流程 2、标…

【MySQL】字符串函数的学习

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-J7VN4RbrBi51ozap {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【论文阅读笔记】InstantID : Zero-shot Identity-Preserving Generation in Seconds

InstantID:秒级零样本身份保持生成 理解摘要Introduction贡献 Related WorkText-to-image Diffusion ModelsSubject-driven Image GenerationID Preserving Image Generation Method实验定性实验消融实验与先前方法的对比富有创意的更多任务新视角合成身份插值多身份区域控制合…

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 静态开辟内存 通过前面的学习,我们已经掌握了两种开辟内存的方…

auto.js教程(autojs教程、autox.js、autoxjs)笔记(一)Autojs概述

参考文章:【自动化技术】Autojs从入门到精通 参考文章:AutoXJS开发入门简介菜鸟教程 参考文章:关于Auto.js的下架说明 参考文章:Auto.js 4.1.0 文档 文章目录 001--【Autojs概述】1、Autojs是什么,能做什么&#x…

【算法与数据结构】496、503、LeetCode下一个更大元素I II

文章目录 一、496、下一个更大元素 I二、503、下一个更大元素II三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、496、下一个更大元素 I 思路分析:本题思路和【算法与数据结构】739、LeetCode每日温度类似…

大脑是宇宙中最复杂的物体——科学家们试图破译它,读懂人们的思想

2023年,德克萨斯大学HuthLab进行的一项研究在神经科学和技术领域引发了震动。通过人工智能(AI)和脑成像技术的结合,无法与外界交流的人的思想首次被翻译成连续的自然语言。 这是迄今为止最接近读心术的科学方法。在过去的二十年里,神经成像技…

Zookeeper集群搭建(3台)

准备工作 1、提前安装好hadoop102、hadoop103、hadoop104三台机器,参照:CentOS7集群环境搭建(3台)-CSDN博客 2、提前下载好Zookeeper安装包并上传到/opt/software上、安装包,链接:https://pan.baidu.com/…

如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题

利用cron定时任务自动更新SSL证书后,用浏览器访问网站,获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。 据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。 所以我们需要创建一bash脚本,然后定时调用这个脚…

Java多线程:定时器

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、Timer类二、手动实现定时器1、实现逻辑2、问题描述2.1、问题一:线程安全问题2.2、问题二:使用 slee…

[C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改

问题描述 WPF中DataGrid的选中行或选中者单元格&#xff0c;在焦点失去后&#xff0c;颜色会很淡&#xff0c;很不明显&#xff0c;不容易区分。 解决方法 在失去焦点的情况下&#xff0c;如何设置行或单元格与选中的时候颜色一样&#xff1f; <DataGrid.Resources>&…

滑块识别验证

滑块识别 1. 获取图片 测试网站&#xff1a;https://www.geetest.com/adaptive-captcha-demo 2. 点击滑块拼图并开始验证 # 1.打开首页 driver.get(https://www.geetest.com/adaptive-captcha-demo)# 2.点击【滑动拼图验证】 tag WebDriverWait(driver, 30, 0.5).until(la…

利用YOLOv8 pose estimation 进行 人的 头部等马赛克

文章大纲 马赛克几种OpenCV 实现马赛克的方法高斯模糊pose estimation 定位并模糊:三角形的外接圆与膨胀系数实现实现代码实现效果参考文献与学习路径之前写过一个文章记录,怎么对人进行目标检测后打码,但是人脸识别有个问题是,很多人的背影,或者侧面无法识别出来人脸,那…

Golang GC 介绍

文章目录 0.前言1.发展史2.并发三色标记清除和混合写屏障2.1 三色标记2.2 并发标记问题2.3 屏障机制Dijkstra 插入写屏障Yuasa 删除写屏障混合写屏障 3.GC 过程4.GC 触发时机5.哪里记录了对象的三色状态&#xff1f;6.如何观察 GC&#xff1f;方式1&#xff1a;GODEBUGgctrace1…

算法学习——LeetCode力扣二叉树篇1

算法学习——LeetCode力扣二叉树篇1 144. 二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 描述 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&a…

大水仙花数求解

输入位数&#xff0c;求解水仙花数。暴力求解&#xff0c;位数如果太多&#xff0c;会超时。 思路&#xff1a; &#xff08;1&#xff09;11333355和33331155看上去是不一样的两个数&#xff0c;但是它们又一样&#xff0c;因为相同数字出现的次数一样。 &#xff08;2&…

深度学习图像分类相关概念简析+个人举例3(CNN相关补充,附详细举例代码1)

【1】激活函数&#xff08;Activation Function&#xff09;&#xff1a;在深度学习&#xff08;CNN&#xff09;中&#xff0c;激活函数用于引入非线性性质&#xff0c;帮助模型学习复杂的关系。常见的激活函数有ReLU、Sigmoid和Tanh等。 &#xff08;1&#xff09;ReLU激活函…

2万字曝光:华尔街疯狂抢购比特币背后

作者/来源&#xff1a;Mark Goodwin and whitney Webb BitcoinMagazine 编译&#xff1a;秦晋 全文&#xff1a;19000余字 在最近比特币ETF获得批准之后&#xff0c;贝莱德的拉里-芬克透露&#xff0c;很快所有东西都将被「ETF化」与代币化&#xff0c;不仅威胁到现有的资产和商…

详细介绍Python网络编程模块

根据前面对网络分层棋型的介绍&#xff0c;我们知道实际的网络模型大致分为四层&#xff0c;这四层各有对应的网络协议提供支持&#xff0c; 网络层协议主要是 IP&#xff0c;它是所有互联网协议的基础&#xff0c;其中 ICMP&#xff08;Internet Control Message Protocol&…

JAVA设计模式之策略模式详解

策略模式 1 策略模式概述 策略模式(strategy pattern)的原始定义是&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。 其实我们在现实生活中常常遇到实现某种目标存在多种策略…