最小二乘法,可视化UI界面

news2024/11/15 18:00:45

在这里插入图片描述

import tkinter as tk
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题


# 函数用于执行最小二乘法线性拟合
def linear_regression():
    x_values = [float(x) for x in x_entry.get().split()]
    y_values = [float(y) for y in y_entry.get().split()]

    A = np.vstack([x_values, np.ones(len(x_values))]).T
    m, c = np.linalg.lstsq(A, y_values, rcond=None)[0]

    # 清空画布
    ax[0].clear()
    ax[1].clear()

    # 绘制数据点
    ax[0].scatter(x_values, y_values, label='数据点')

    # 绘制最小二乘法拟合线
    ax[0].plot(x_values, m * np.array(x_values) + c, 'r', label='自己计算的')

    ax[0].set_title(f'自己计算的: Y = {m:.5f} * X + {c:.5f}')

    # 从斜率和截距输入框获取备选直线的参数
    lines_m = [float(m) for m in m_entry.get().split()]
    lines_c = [float(c) for c in c_entry.get().split()]

    # 绘制备选直线
    for i in range(len(lines_m)):
        ax[0].plot(x_values, lines_m[i] * np.array(x_values) + lines_c[i], label=f'直线 {i + 1}')

    # 计算备选直线中最好的拟合直线,得到是哪一条直线最好
    best_line_index = np.argmin([np.sum(np.square(y_values - (m * np.array(x_values) + c))) for m, c in
                                 zip(lines_m, lines_c)])

    ax[0].set_xlabel('X')
    ax[0].set_ylabel('Y')
    ax[0].legend()

    # 在ax[1]绘制最好的直线
    ax[1].scatter(x_values, y_values, label='数据点')
    ax[1].plot(x_values, lines_m[best_line_index] * np.array(x_values) + lines_c[best_line_index], 'r',
               label=f'直线 {best_line_index + 1}')
    ax[1].set_title(
        f'最佳备选线: Y = {lines_m[best_line_index]} * X + {lines_c[best_line_index]},Index: {best_line_index + 1}')
    ax[1].set_xlabel('X')
    ax[1].set_ylabel('Y')
    ax[1].legend()

    canvas.draw()


# 创建Tkinter窗口
root = tk.Tk()
root.title('最小二乘法线性拟合')

frame = tk.Frame(root)
frame.pack(padx=10, pady=10)

# 创建输入框和标签
x_label = tk.Label(frame, text='输入x值(用空格分隔):')
x_label.pack()
x_entry = tk.Entry(frame)
x_entry.insert(0, '2 4 6 8 10')  # 设置默认值
x_entry.pack()

y_label = tk.Label(frame, text='输入y值(用空格分隔):')
y_label.pack()
y_entry = tk.Entry(frame)
y_entry.insert(0, '10.046 20.090 30.155 40.125 50.074')  # 设置默认值
y_entry.pack()

m_label = tk.Label(frame, text='输入备选直线的斜率(用空格分隔):')
m_label.pack()
m_entry = tk.Entry(frame)
m_entry.insert(0, '5.0 5.01 4.97 4.95 5.08')  # 设置默认值
m_entry.pack()

c_label = tk.Label(frame, text='输入备选直线的截距(用空格分隔):')
c_label.pack()
c_entry = tk.Entry(frame)
c_entry.insert(0, '0.08 0.07 0.12 0.15 0.06')  # 设置默认值
c_entry.pack()

# 创建确认按钮
calculate_button = tk.Button(frame, text='确认', command=linear_regression)
calculate_button.pack()

# 创建大画布
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
canvas = FigureCanvasTkAgg(fig, master=frame)
canvas.get_tk_widget().pack()
canvas.draw()

# 运行Tkinter主循环
root.mainloop()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【matplotlib】matplotlib的颜色表

【matplotlib】matplotlib的颜色表 文章目录 【matplotlib】matplotlib的颜色表1. 颜色表Reference 1. 颜色表 在使用matplotlib库进行绘图的时候,只需要指定关键字coloryour_color就能修改绘制的颜色了,具体的颜色表如下。 Reference https://finthon…

文献阅读(207)FPGA HBM

题目:HBM Connect: High-Performance HLS Interconnect for FPGA HBM时间:2021会议:FPGA研究机构:UCLA Jason Cong 题目:Demystifying the Memory System of Modern Datacenter FPGAs for Software Programmers throug…

五金经营小程序商城的作用体现在哪

对消费者而言,如今线上购买五金是很多人的选择,传统线下购买,不仅需要跑路,而且店内未必有所需品,但线上平台则一目了然购买所需品,本地/外地均可以触达到,同时还可对用户/会员进行高效管理&…

vscode代码快捷输入

Vscode代码片段快捷输入 常用的代码片段为了避免重复输入,可以使用Vsco的中用户代码片段进行设置,这样就可以实现快捷输入. 操作流程 如下 打开vscode的设置 2. 找到用户代码片段 3. 选择模板 4. 然后写入代码片段即可 上面的代码片段可以设置多个,看自己 重点关注的是 prefi…

GoLong的学习之路(四)语法之循环语句

书接上回,上回说到运算符,这次我们说一个编程语言中最重要的一点:流程控制,及循环语句 文章目录 循环语句if else(分支结构)if条件判断特殊写法 for(循环结构)for range(键值循环) switch casegoto(跳转到指定标签)break(跳出循环…

2022年京东双11母婴品类数据回顾

母婴产品作为部分家庭的刚需,双11期间的行业热度也节节攀升,2022年双11期间,行业中不少品类赛道势头猛进。下面,鲸参谋带大家一起来回顾2022年双11期间母婴行业大盘及母婴重点细分赛道的销售表现。 母婴行业大盘 2022年双11期间&a…

基于鲸鱼算法的无人机航迹规划-附代码

基于鲸鱼算法的无人机航迹规划 文章目录 基于鲸鱼算法的无人机航迹规划1.鲸鱼搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用鲸鱼算法来优化无人机航迹规划。 1.鲸鱼搜索算法 …

微积分(二) 导数与微分

前言 导数反映了函数值相对于自变量的变化快慢程度,而微分则表明当自变量有微小变化时,函数值大体上变化多少 瞬时速度的解决——极限 牛顿采用了一种无限逼近的方法。 平均速度的定义:如果一个物体在一段时间△t内位移了s,它在这段时间内的平均速度…

二进制明文字符串加密:还原与反还原

背景 上一篇文章中介绍了xorstr的原理和最小化验证概念的代码,这篇文章来看下这种已经被广泛应用于各恶意样本以及安全组件中的技术如何还原,如果还没看上篇建议先看下了解其实现后再看本篇文章 xorstr的现状 随着相关技术的应用越来越广,…

最新咸鱼签名JS逆向分析教程

本章教程,主要分享一下咸鱼H5网页端sign签名算法。 案例地址:https://h5.m.goofish.com/item?id=744640763988 程仅供参考,请勿滥用,由此带来的法律责任,需由自己承担。 目录 一、参数分析 二、逆向过程

TCmalloc (google开源项目核心部分模拟实现)

1什么是内存池 1.1池化技术 所谓“池化技术”,就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。之所以要申请过 量的资源,是因为每次申请该资源都有较大的开销,不如提前申请好了,这样使用时就…

橙河网络:国外问卷调查赚钱的项目可靠吗?

国外问卷调查项目是可靠的,是一个长期稳定的互联网项目。 大家好,我是橙河网络,今天聊一聊国外问卷调查赚钱的项目可靠吗? 在海外地区,很多公司和机构,它们为了收集一些关于产品和服务的消费者意见&#…

读懂Json文件[妈妈再也不用担心我不读懂了]

第一次见到它,我特别害怕, 很大一个文件,还是二进制的,是什么意思呢?该文件是深度学习模型训练完成之后由模型的输出数据保存的结果数据; 在线JSON编译器 JSON Editor Online 把文件传上去! …

React-native-camera 在小米手机上拍照查看闪退

场景:为实现可拍照和录像的相机用react-native-camera这个库手写一个相机,发现了拍出来的图片在小米10上查看闪退 根据手机后台捕获的错误信息是什么玩意太大了(之前还以为是图片显示组件的问题) 改进:相机吊起的时候…

unity中使用protobuf工具将proto文件转为C#实体脚本

unity中使用protobuf工具将proto文件转为C#实体脚本 介绍优点缺点Protobuf 为什么比 XML 快得多?Protobuf的EncodingProtobuf封解包的过程通常编写一个Google Protocol Buffer应用需要以下几步: Protostuff是什么Protobuf工具总结 介绍 protobuf也就是G…

第三章Maven依赖的特性-基础篇

文章目录 Maven依赖核心配置文件pom.xml依赖的范围概念compile 和 test 对比compile 和 provided 对比结论 测试验证 compile 范围对 main 目录有效验证test范围对main目录无效验证test和provided范围不参与服务器部署验证provided范围对测试程序有效 依赖的传递概念传递的原则…

计算机体系结构实验三-缓存一致性

最近在看CMU15-418,LECTURE10-11就是讲两个缓存一致性协议,刚好这部分内容在实验中学习过,在实验中监听式协议提到的是MSI协议(modified,shared,invalid),lecture中还讲了优化的版本MESI(应该是实际使用的协…

pytorch 入门 (四)案例二:人脸表情识别-VGG16实现

实战教案二:人脸表情识别-VGG16实现 本文为🔗小白入门Pytorch内部限免文章 参考本文所写记录性文章,请在文章开头注明以下内容,复制粘贴即可 🍨 本文为🔗小白入门Pytorch中的学习记录博客🍦 参…

CSMM软件能力成熟度评估

CSMM认证,又称为“软件能力成熟度评估”,也有地方称为“CSMM软件能力成熟度模型评估国家标准认证”,也被民间喊作“中国版CMMI认证”。该标准于2021年6月8日发布,是我国自主标准,适合中国国情以及中国软件企业的特点。…

2023腾讯云服务器价格表(轻量/CVM/免费/GPU)

腾讯云服务器租用价格表,轻量应用服务器、云服务器CVM、免费云服务器申请和GPU云服务器配置报价,轻量2核2G4M价格108元一年、2核4G6M带宽159元一年、4核8G10M优惠价425元一年、8核16G14M优惠价1396元一年、16核32G20M价格2775.99元一年,云服务…