当前位置: 首页 > news >正文

机器学习之实验过程01

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

data_path = '/home/py/Work/labs/data/SD.csv'  # 请确保您的数据文件路径是正确的

df = pd.read_csv(data_path)

df.head()

# 创建散点图 

# 创建散点图
plt.figure(figsize=(10, 6))
plt.scatter(df['成本'], df['价格'], color='blue', label='Data Spot')
plt.title('Cost vs Price')
plt.xlabel('Cost')
plt.ylabel('Price')
plt.legend()
plt.grid(True)
plt.show()
plt.savefig('test.jpg')

实现梯度下降算法来优化线性回归模型的参数

def gradient_descent(X, y, learning_rate=0.01, iterations=100):"""实现梯度下降算法来优化线性回归模型的参数。"""m = len(y)X = np.hstack((np.ones((m, 1)), X))  # 添加一列 1 作为偏置项theta = np.zeros(X.shape[1])loss_history = []for _ in range(iterations):predictions = X.dot(theta)errors = predictions - ygradient = X.T.dot(errors) / mtheta -= learning_rate * gradientloss = np.mean(errors ** 2) / 2loss_history.append(loss)return theta, loss_history

# 准备数据

X = df[['成本']]

y = df['价格']

# 使用梯度下降优化参数

theta, _ = gradient_descent(X, y, iterations=1000)

# 绘制回归拟合图

plt.figure(figsize=(10, 6))

plt.scatter(X, y, color='blue', label='Data Spot')

plt.plot(X, theta[0] + theta[1] * X, color='red', label='Fitting line')

plt.title('Cost vs Price')

plt.xlabel('Cost')

plt.ylabel('Price')

plt.legend()

plt.grid(True)

plt.show()

# 显示回归方程

print(f"The regression equation is: Price = {theta[0]:.2f} + {theta[1]:.2f} * Cost")

# 分析迭代次数对性能的影响 

# 分析迭代次数对性能的影响
iteration_counts = [50, 100, 200, 500, 1000,2000]
losses = []for iterations in iteration_counts:_, loss_history = gradient_descent(X, y, iterations=iterations)losses.append(loss_history[-1])
# 绘制结果
plt.figure(figsize=(10, 6))
plt.plot(iteration_counts, losses, marker='o')
plt.title('Loss vs. Iteration')
plt.xlabel('Iterations')
plt.ylabel('Loss Value')
plt.grid(True)
plt.show()

相关文章:

  • 一文掌握 Vue3 + Express 大文件分片上传、断点续传、秒传技巧!
  • PSINS四元数转换函数rv2q
  • 在Excel中,如何简单快速地删除重复项,这里提供详细步骤
  • Linux系统中跟TCP相关的内核参数
  • 千帆起航:探索百度智能云千帆AppBuilder在AI原生应用开发中的革新之路
  • 虚拟机Windows Server 2012 与ubuntu的安装与布置
  • 【期末复习】微信小程序复习大纲( 1- 5 章)
  • C#/WPF 播放音频文件
  • R语言【base】——invisible将控制台的输出模式调整为隐藏,只允许赋值后输出,返回对象的(临时)不可见副本
  • 《Nature》预测 2024 科技大事:GPT-5预计明年发布等
  • 持续集成交付CICD:Jira 远程触发 Jenkins 实现更新 GitLab 分支
  • vue3实现本地开发使用的px转换成vw,px转换成rem方法整理
  • 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
  • 深入了解 Git 分支合并冲突解决步骤
  • Http 请求体和响应体中重要的字段
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript 奇技淫巧
  • JavaScript 一些 DOM 的知识点
  • Java精华积累:初学者都应该搞懂的问题
  • Js基础——数据类型之Null和Undefined
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • python大佬养成计划----difflib模块
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Sublime text 3 3103 注册码
  • vuex 笔记整理
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 给github项目添加CI badge
  • 简析gRPC client 连接管理
  • 聊聊sentinel的DegradeSlot
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前嗅ForeSpider教程:创建模板
  • 世界上最简单的无等待算法(getAndIncrement)
  • 最简单的无缝轮播
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 通过调用文摘列表API获取文摘
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #1015 : KMP算法
  • #QT项目实战(天气预报)
  • (C#)获取字符编码的类
  • (done) 两个矩阵 “相似” 是什么意思?
  • (ZT)一个美国文科博士的YardLife
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (第二周)效能测试
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET是什么
  • /var/log/cvslog 太大
  • @DataRedisTest测试redis从未如此丝滑
  • @private @protected @public
  • [android] 切换界面的通用处理