通过多项式回归解锁准确的预测

数据样本

date = [ { "study_time": 1, "salary":  350, "absences": 5, "city": "san francisco" }, { "study_time": 2, "salary": 1600, "absences": 4, "city": "london" }, { "study_time": 3, "salary": 2450, "absences": 3, "city": "paris" }, { "study_time": 4, "salary": 5150, "absences": 5, "city": "san francisco" }, { "study_time": 5, "salary": 5800, "absences": 4, "city": "london" }, { "study_time": 6, "salary": 6050, "absences": 3, "city": "paris" }]

这些值的估计工资是多少?

{ "study_time": 13, "salary": ???, "absences": 5, "city": "san francisco" }

结果

使用多项式回归这个序列的值13将是:24814
但正确的值是:19550
错误:5264

如果我预测位置 49 它将是:182441
但正确的值是:77150
错误:105291

这是产生级数的“隐藏算法”:

x = 0absences_base = 50salary_base = 1000data = []for i in range(50):    if x == 0:        x += 1        data.append({            "study_time": i + 1,            "salary": (i * salary_base + (300 * 2 * (i + 1))) - (5 * absences_base),            "absences": 5,            "city": "san francisco"        })    elif x == 1:        x += 1        data.append({            "study_time": i + 1,            "salary": (i * salary_base + (200 * 2 * (i + 1))) - (4 * absences_base),            "absences": 4,            "city": "london"        })    else:        x = 0        data.append({            "study_time": i + 1,            "salary": (i * salary_base + (100 * 2 * (i + 1))) - (3 * absences_base),            "absences": 3,            "city": "paris"        })for entry in data:    print(entry)
{'study_time': 1, 'salary': 350, 'absences': 5, 'city': 'san francisco'}{'study_time': 2, 'salary': 1600, 'absences': 4, 'city': 'london'}{'study_time': 3, 'salary': 2450, 'absences': 3, 'city': 'paris'}{'study_time': 4, 'salary': 5150, 'absences': 5, 'city': 'san francisco'}{'study_time': 5, 'salary': 5800, 'absences': 4, 'city': 'london'}{'study_time': 6, 'salary': 6050, 'absences': 3, 'city': 'paris'}{'study_time': 7, 'salary': 9950, 'absences': 5, 'city': 'san francisco'}{'study_time': 8, 'salary': 10000, 'absences': 4, 'city': 'london'}{'study_time': 9, 'salary': 9650, 'absences': 3, 'city': 'paris'}{'study_time': 10, 'salary': 14750, 'absences': 5, 'city': 'san francisco'}{'study_time': 11, 'salary': 14200, 'absences': 4, 'city': 'london'}{'study_time': 12, 'salary': 13250, 'absences': 3, 'city': 'paris'}{'study_time': 13, 'salary': 19550, 'absences': 5, 'city': 'san francisco'}

如何预测准确值?

多项式回归是一种统计技术,可用于建模和预测两个变量之间的关系。然而,在这种涉及多个变量(学习时间、工资、缺勤和城市)的情况下,多项式回归可能不足以捕获时间序列中的所有模式。

所讨论的问题是时间序列的经典示例,我们需要根据过去观察到的模式来预测未来值。

这个问题可以通过机器学习来解决

分析变量之间的所有关系测试多个假设以发现是什么产生了进展

此外,分析变量之间的所有关系并测试各种假设以发现产生进展的因素也很重要。这可能包括:

探索性分析:使用探索性分析技术更好地理解时间序列的性质并识别变量之间可能的模式或关系。

统计测试:进行统计测试以检查观察到的变量之间的关系是否具有显着性。

另一个解决方案是创建一个算法,用最基本的假设来做到这一点:

测试“关系和”对级数的影响: a+b->c、b+c->a、c+a->b、a+b+c->d 等(-> == 影响、产生)测试“关系减法”、“关系除法”、“关系平方”等

这个用于测试“关系运算”的算法,它将是一种直接机器学习(或显式机器学习)方法。这意味着该算法不使用先进的机器学习技术,而是实现规则和逻辑结构来学习时间序列模式。

仅测试基本假设,局限性是:

过度拟合:算法可能过度专注于训练数据集中的特定模式,而不能很好地推广到新数据。可扩展性有限:如果数据集非常大或复杂,算法可能无法实时测试所有可能的假设。

虽然机器学习模型可以:

学习复杂的模式并推广到新数据,而不需要明确指定它们。

但样本量又如何呢?

在寻找更复杂的解决方案之前,最好确保更简单的解决方案已经过充分的测试。

如果我们仅包含 3 行级数序列,我们可以使用多项式级数预测准确值

date = [ { "study_time": 1, "salary":  350, "absences": 5, "city": "san francisco" }, { "study_time": 2, "salary": 1600, "absences": 4, "city": "london" }, { "study_time": 3, "salary": 2450, "absences": 3, "city": "paris" }, { "study_time": 4, "salary": 5150, "absences": 5, "city": "san francisco" }, { "study_time": 5, "salary": 5800, "absences": 4, "city": "london" }, { "study_time": 6, "salary": 6050, "absences": 3, "city": "paris" }, {'study_time': 7, 'salary': 9950, 'absences': 5, 'city': 'san francisco'}, {'study_time': 8, 'salary': 10000, 'absences': 4, 'city': 'london'}, {'study_time': 9, 'salary': 9650, 'absences': 3, 'city': 'paris'}]

现在

study_time = 13 => 预计薪资:19550 study_time = 49 => 预计薪资:77150

所以这个问题可以用多项式回归来解决,只要数据样本足够

通过多项式回归解锁准确的预测

有趣的是,该模型只需要第 9 行之前的数据样本即可做出准确的预测。这表明时间序列中存在规则模式,可以用有限的数据量来捕获。确实有。

完整代码

import pandas as pdimport matplotlib.pyplot as pltfrom sklearn.preprocessing import PolynomialFeaturesfrom sklearn.linear_model import LinearRegressiondata = pd.DataFrame({    "study_time": [1, 2, 3, 4, 5, 6, 7, 8, 9],    "absences": [5, 4, 3, 5, 4, 3, 5, 4, 3],    "San Francisco": [0, 1, 0, 0, 1, 0, 0, 1, 0], # dummy variables    "London": [0, 0, 1, 0, 0, 1, 0, 0, 1], # dummy variables    "Paris": [1, 0, 0, 1, 0, 0, 1, 0, 0], # dummy variables    "salary": [350, 1600, 2450, 5150, 5800, 6050, 9950, 10000, 9650]}) # Independent and dependent variablesX = data[["study_time", "absences", "San Francisco", "London", "Paris"]]y = data["salary"]# Creating polynomial characteristics of degree 2characteristics_2 = PolynomialFeatures(degree=2)x_pol_2 = characteristics_2.fit_transform(X)# Fitting the linear regression modelmodel2 = LinearRegression()model2.fit(x_pol_2, y)# New data provided for predictionnew_data = pd.DataFrame({    "study_time": [13],    "absences": [5],    "San Francisco": [0],    "London": [0],    "Paris": [1]})# Polynomial transformation of the new datanew_data_pol_2 = characteristics_2.transform(new_data)predicted_salary = model2.predict(new_data_pol_2)print("Predicted Salary:", int(predicted_salary[0]) )# Plotplt.subplot(1, 1, 1)plt.scatter(new_data["study_time"], predicted_salary, color='blue', label='Real Salary')plt.scatter(data["study_time"], y, color='blue', label='Real Salary')plt.scatter(data["study_time"], y_pol_2, color='red', label='Polynomial Fit', marker='x')plt.title("Polynomial Regression - Salary and Study Time")plt.xlabel("Study Time")plt.ylabel("Salary")plt.legend()plt.show()

以上就是通过多项式回归解锁准确的预测的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1348895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 12:25:12
下一篇 2025年12月13日 12:25:27

相关推荐

  • DevOps 中脚本语言的力量:日复一日的 DevOps 工具系列

    欢迎来到“50 天 50 个 DevOps 工具”系列的第 26 天!今天,我们将把重点从特定工具转移到 DevOps 和 IT 自动化的基本方面——脚本语言。脚本编写是 DevOps 中自动化、编排和配置管理的支柱。了解如何有效地使用脚本语言可以显着提高 DevOps 工程师的效率和生产力。 什么…

    好文分享 2025年12月13日
    000
  • 利用 AI 促进内容创作:引入 AI 博客文章生成器

    在当今快节奏的数字世界中,内容为王。无论您是博主、营销人员还是企业主,创建高质量、引人入胜的内容对于增加流量和扩大在线影响力至关重要。但让我们面对现实吧,写作可能既耗时又具有挑战性,尤其是当您同时处理多项任务时。这就是人工智能博客文章生成器的用武之地! ? 什么是人工智能博客文章生成器? AI 博客…

    2025年12月13日 好文分享
    000
  • 关于棋盘的一个

    每周挑战 281 很抱歉在过去的几周里我没能做到。我搬了家,换了新工作,所以这段时间没有机会参与挑战。 穆罕默德·s·安瓦尔 (mohammad s. anwar) 每周都会发出“每周挑战”,让我们所有人都有机会为两周的任务提出解决方案。我的解决方案首先用python编写,然后转换为perl。这对我…

    2025年12月13日
    000
  • 人口统计数据集分析

    你好, 由于我最近沉浸在 Python 数据分析中,今天我成功地使用了我的第一个 Jupyter 笔记本。它的灵感来自于 freeCodeCamp 的练习。 ? 它看起来像什么? 笔记本本身怎么样? 基于简单的方法,该笔记本具有练习目的,专为想要掌握 Python 数据分析的初学者而设计。 我邀请大…

    2025年12月13日
    000
  • 如何为初学者使用 Python 创建“猜数字”游戏

    什么是“猜数字”游戏? 在这个游戏中,计算机随机选择一个数字,你必须猜测它是什么。每次猜测后,计算机都会告诉您您的猜测是否太高、太低或恰到好处。当您猜对数字时游戏结束,并且它还会告诉您尝试了多少次。 让我们开始吧! 第1步:导入随机模块首先,我们需要导入随机模块。该模块帮助我们生成一个随机数,您将尝…

    2025年12月13日
    000
  • 使用 pytest-mask-secrets 保护测试机密

    保持敏感数据的安全和私密是软件开发的首要任务。应用程序日志是常见的泄漏媒介之一,受到仔细保护,以防止出现秘密。同样的担忧和风险也适用于测试日志,它可能会泄露密码或访问令牌。运行 ci 工作流程的工具通常提供一种机制,可以轻松屏蔽日志中的敏感数据。虽然这非常方便、高效且易于使用,但在某些情况下,这可能…

    2025年12月13日
    000
  • BiRefNet 最先进的最新最好的背景批量删除应用程序

    birefnet 最先进的最新最好的背景批量删除应用程序。 birefnet 是最新发布的最先进的背景去除开源模型。它比我们所知道的最好的 bria mbg v1.4 好得多。 官方仓库:https://github.com/ZhengPeng7/BiRefNet 从以下网址下载APP和安装程序:h…

    2025年12月13日
    000
  • MyPy简介

    介绍 mypyc++0b24f9d990aea8bfc2101d73a0>1 是 python 的静态类型检查器。与 c++ 或 java 等静态类型语言不同,python 是动态类型的。这意味着在 python 中,您不必显式声明变量的类型;它是在运行时推断的。例如: python(动态类型…

    2025年12月13日
    000
  • 不可变数据类型的真正含义是什么?

    为什么数据类型要么是可变的,要么是不可变的?让我们以 python 为例, Python中的数据类型基本上都是对象或类,int是类,浮点数,列表等 因此,写入 x=6 会创建一个值为 6 的新整数对象,并将一个名为 x 的引用指向该对象。 现在我们需要研究类,类基本上将数据和函数组合在一起,这些函数…

    2025年12月13日
    000
  • 什么是Python?

    Python 是一种流行的编程语言。它由 Guido van Rossum 创建,并于 1991 年发布。 Guido van Rossum(荷兰语:Guido van Rossum)是一位荷兰计算机程序员,最著名的是 Python 编程语言的作者。 Python 是一种功能强大、用途广泛且简单的编…

    2025年12月13日
    000
  • AutoDocument – 开源邮件合并替代方案

    AutoDocument – 开源邮件合并替代方案 您好,这篇文章将介绍 AutoDocument,这是一个免费的开源文档生成 Web 应用程序,可将电子表格、数据库和用户表单连接到 Microsoft Word 和 PDF 等文档中。它基于出色的开源库,例如 python-docx-t…

    2025年12月13日
    000
  • timeitrepeat – 通过重复来理解模式

    1.问题 在您的软件工程职业生涯中,您可能会遇到一段性能不佳的代码,花费的时间超出了可接受的范围。更糟糕的是,多次执行时性能不一致且变化很大。 此时,您必须接受这样的事实:在软件性能方面,存在很多不确定性。数据可以分布在一个窗口内,有时遵循正态分布。其他时候,它可能会不稳定,没有明显的模式。 2. …

    2025年12月13日
    000
  • 为什么 Python 开发人员失业?服务技巧

    科技世界是动态的,工作保障不再是理所当然的,即使对于像 Python 开发这样的急需技能来说也是如此。虽然 Python 仍然是一种流行的语言,但最近的经济衰退和行业转变引发了人们对 Python 开发人员工作稳定性的担忧。让我们找出这些挑战背后的原因,并探索让您的职业生涯面向未来的策略。 Pyth…

    2025年12月13日
    000
  • Pygame开发游戏实用指南—Pygame简介

    在本文中,我们将学习如何下载和安装游戏开发库 pygame,并且我们将运行一个简单的示例项目来熟悉 pygame。 项目代码下载链接:https://github.com/la-vie-est-belle/pygame_codes 安装 pygame 在 windows 上安装 pygame打开命令…

    2025年12月13日 好文分享
    000
  • 使用 Scrapy 和 Playwright 无限滚动抓取页面

    使用 scrapy 抓取网站时,您很快就会遇到各种需要发挥创意或与要抓取的页面进行交互的场景。其中一种场景是当您需要抓取无限滚动页面时。当您向下滚动页面时,这种类型的网站页面会加载更多内容,就像社交媒体源一样。 抓取这些类型的页面的方法肯定不止一种。我最近解决这个问题的一种方法是继续滚动,直到页面长…

    2025年12月13日
    000
  • PyTorch 频谱

    欢迎来到 PyTorch Spectrum ? 开发社区上一系列令人兴奋的新帖子,我们将深入研究 PyTorch 的动态领域!无论您是初学者还是寻求提高专业知识,本系列都可以作为您以引人入胜且用户友好的方式掌握 PyTorch 的切入点。 ? 我叫 Dhia,虽然我是博客界的新手,但我对人工智能和深…

    2025年12月13日
    000
  • 使用 AWS Lambda 函数 URL 简化 API 访问:通过内置安全性处理 GET、POST、PUT 和 DELETE

    在 aws 上构建无服务器应用程序时,aws lambda 通常是无需预置或管理服务器即可运行代码的首选解决方案。传统上,aws api gateway 用于将 lambda 函数公开为 restful api。但是,aws 引入了 lambda 函数 url,这是一种通过 https 调用 lam…

    2025年12月13日
    000
  • 测试自动化

    初始设置 下载PythonPython 是一种编程语言。可以从https://www.python.org/downloads/下载。 1.1 激活虚拟环境在您选择类型的目录中python -m venv venv并激活它venv/Scrpts/Activate.ps1 下载机器人框架在终端中输入 …

    2025年12月13日
    000
  • 我的 HNG 之旅第六阶段:利用 Python 公开 DORA 指标

    介绍 对于第 6 阶段,我们的任务是公开 dora(devops 研究),我最近开始了一个使用 python 公开 dora(devops 研究和评估)指标的项目。这次经历教会了我关于 devops 实践以及与合作的复杂性的宝贵经验。在本文中,我将引导您完成整个过程,解释每个指标的含义,并强调一些需…

    2025年12月13日
    000
  • Udemy 上的最佳 Python 课程

    Udemy 上的最佳 Python 课程 Python 是当今世界上最流行的编程语言之一,学习 Python 可以打开各种职业机会的大门。无论您对 Web 开发、数据科学、人工智能还是自动化感兴趣,掌握 Python 都是必不可少的。 Udemy 提供大量 Python 课程,适合从初学者到高级程序…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信