机器学习第二篇 多变量线性回归

数据集:世界幸福指数数据集中的变量有幸福指数排名、国家/地区、幸福指数得分、人均国内生产总值、健康预期寿命、自由权、社会支持、慷慨程度、清廉指数。我们选择GDP per Capita和Freedom,来预测幸福指数得分。

文件一:linear,在上一篇博客里。

文件二:multivariate_linear_regression.py

import numpy as np
"""用于科学计算的一个库,提供了多维数组对象以及操作函数"""
import pandas as pd
"""一个用于数据导入、导出、清洗和分析的库,本文中导入csv格式数据等等"""
import matplotlib.pyplot as plt
"""pyplot提供了绘图接口"""
import matplotlib
"""一个强大的绘图库"""
import plotly
"""网页交互数据可视化工具,可以直接从https://plotly.com/python/官网copy代码进行修改"""
import plotly.graph_objs as goplotly.offline.init_notebook_mode()
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.family'] = 'SimHei'  # 指定默认字体为黑体
matplotlib.rcParams['axes.unicode_minus'] = False  # 正确显示负号from prepare_for_training import LinearRegressiondata = pd.read_csv("D:/machine_learning/archive/2017.csv")
train_data = data.sample(frac = 0.8)
"""从数据集中随机抽取80%的数据进行训练"""
test_data = data.drop(train_data.index)
"""从数据集中移除训练集得到测试机"""input_param_name_1 = 'Economy..GDP.per.Capita.'
input_param_name_2 = 'Freedom'
output_param_name = 'Happiness.Score'x_train = train_data[[input_param_name_1,input_param_name_2]].values
y_train = train_data[[output_param_name]].valuesx_test = test_data[[input_param_name_1,input_param_name_2]].values
y_test = test_data[[output_param_name]].valuesplot_training_trace = go.Scatter3d(x = x_train[:,0].flatten(),y = x_train[:,1].flatten(),z = y_train.flatten(),name = 'Training Set',mode = 'markers',marker = {'size':10,'opacity':1,'line':{'color':'rgb(255,255,255)','width':1},}
)plot_test_trace = go.Scatter3d(x = x_test[:,0].flatten(),y = x_test[:,1].flatten(),z = y_test.flatten(),name = 'Test Set',mode = 'markers',marker = {'size':10,'opacity':1,'line':{'color':'rgb(255,255,255)','width':1},}
)plot_layout = go.Layout(title = 'Data Sets',scene = {'xaxis':{'title':input_param_name_1},'yaxis':{'title':input_param_name_2},'zaxis':{'title':output_param_name}},margin = {'l':0,'r':0,'b':0,'t':0}
)
plot_data = [plot_training_trace,plot_test_trace]
plot_figure = go.Figure(data = plot_data,layout=plot_layout)
plotly.offline.plot(plot_figure)
"""plt.scatter(x_train,y_train,label ='Train data')
plt.scatter(x_test,y_test,label ='Test data')
plt.xlabel(input_param_name_1)
plt.ylabel(output_param_name)
plt.title('Happy')
plt.legend()
plt.show()""""""训练次数,学习率"""
num_iterations = 500
learning_rate = 0.01
polynomial_degree = 0
sinusoid_degree = 0linear_regression = LinearRegression(x_train,y_train,polynomial_degree,sinusoid_degree)
(theta,cost_history) = linear_regression.train(learning_rate,num_iterations)
print('开始时的损失',cost_history[0])
print('训练后的损失',cost_history[-1])plt.plot(range(num_iterations),cost_history)
plt.xlabel('Iter')
plt.ylabel('cost')
plt.title('gradient descent progress')
plt.show()predictions_num = 10x_min = x_train[:,0].min()
x_max = x_train[:,0].max()y_min = x_train[:,1].min()
y_max = x_train[:,1].max()x_axis = np.linspace(x_min,x_max,predictions_num)
y_axis = np.linspace(y_min,y_max,predictions_num)x_predictions = np.zeros((predictions_num * predictions_num,1))
y_predictions = np.zeros((predictions_num * predictions_num,1))x_y_index = 0
for x_index,x_value in enumerate(x_axis):for y_index,y_value in enumerate(y_axis):x_predictions[x_y_index] = x_valuey_predictions[x_y_index] = y_valuex_y_index += 1z_predictions = linear_regression.predict(np.hstack((x_predictions,y_predictions)))plot_predictions_trace = go.Scatter3d(x = x_predictions.flatten(),y = y_predictions.flatten(),z = z_predictions.flatten(),name = 'Prediction Plane',mode = 'markers',marker = {'size':1,},opacity=0.8,surfaceaxis=2,
)plot_data = [plot_training_trace,plot_test_trace,plot_predictions_trace]
plot_figure = go.Figure(data = plot_data,layout=plot_layout)
plotly.offline.plot(plot_figure)效果:

损失值较单变量而言,由降低约0.1.

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

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

相关文章

位运算,状态压缩dp(算法竞赛进阶指南学习笔记)

目录 移位运算一些位运算的操作最短 Hamilton 路径(状态压缩dp模板,位运算) 0x是十六进制常数的开头;本身是声明进制,后面是对应具体的数; 数组初始化最大值时用0x3f赋值; 移位运算 左移 把二…

Java高频面试之并发编程-05

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:线程有哪些调度方法? 在Java中,线程的调用方法主要包括以下几种方式,每种方式适用于…

进程的同步和互斥

进程同步(synchronous) ✅通俗理解: 就像在排队买饭,一个一个来,前面的人不走,后面的人就不能干事。 进程同步就是:多个进程之间需要协调,有先后顺序,一个进程要等另一…

PDF处理控件Aspose.PDF指南:使用 Python 将 EPUB 转换为 PDF

EPUB是一种流行的电子书格式,用于可重排内容,而PDF则广泛用于固定版式文档,非常适合共享和打印。如果您想使用 Python 将 EPUB 转换为 PDF,Aspose.PDF for Python 提供了一个简单可靠的解决方案。在本教程中,我们将向您…

day4-小白学习JAVA---开发软件_Scanner键盘录入_Random随机数_流程控制语句

开发软件_Scanner键盘录入_Random随机数_流程控制语句 一、开发软件idea(MAC版)1、软件安装-安装社区版2、中英文设置3、保存时格式化配置4、注释和代码对不齐5、idea快捷键 二、键盘录入--Scanner1、next和nextInt2、next和nextLine区别 三、Random随机…

MySQL基本查询与数据操作全面解析

目录 1. CRUD操作概述 2. Create操作详解 2.1 表的创建 2.2 单行数据插入 2.3 多行数据插入 2.4 插入冲突处理 3. Retrieve操作详解 3.1 基础查询 全列查询(慎用) 指定列查询 表达式查询 结果去重 3.2 条件查询(WHERE子句&#…

01.Python代码Pandas是什么?pandas的简介

01.Python代码Pandas是什么?pandas的简介 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性,希望对您有用~ pyth…

(8)ECMAScript语法详解

本系列教程目录:Vue3Element Plus全套学习笔记-目录大纲 文章目录 第2章 ECMAScript2.1 ECMAScript 的发展历史2.2 什么是ES62.3 ES6语法新特性2.3.1 变量声明let2.3.2 常量声明2.3.3 模板字符串2.3.4 函数默认参数2.3.5 箭头函数2.3.6 对象初始化简写2.3.7 解构2.3…

Android JNI开发中头文件引入的常见问题与解决方案​,提示:file not found

Android JNI开发中头文件引入的常见问题与解决方案 问题场景(新手易犯错误) 假设你在开发一个JNI项目,想要实现一个线程安全的队列(SafeQueue),于是直接在cpp目录下创建了safe_queue.h文件,并开…

C++静态与动态联编区别解析

在 C++ 中,静态联编(Static Binding)和动态联编(Dynamic Binding)是两种不同的函数调用绑定机制,核心区别在于确定函数调用的时机和多态性的支持。以下是详细解释: 1. 静态联编(Static Binding) 定义:在编译阶段确定函数调用与具体实现的关系。特点: 由编译器直接确…

如何批量为多个 Word 文档添加水印保护

在日常办公中,Word文档添加水印是一项重要的操作,特别是在需要保护文件内容的安全性和版权时。虽然Office自带了添加水印的功能,但当需要一次性给多个Word文档添加水印时,手动操作显得非常繁琐且低效。为了提高效率,可…

【愚公系列】《Python网络爬虫从入门到精通》057-分布式爬取中文日报新闻数据

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…

Linux系统编程 day9 SIGCHLD and 线程

SIGCHLD信号 只要子进程信号发生改变&#xff0c;就会产生SIGCHLD信号。 借助SIGCHLD信号回收子进程 回收子进程只跟父进程有关。如果不使用循环回收多个子进程&#xff0c;会产生多个僵尸进程&#xff0c;原因是因为这个信号不会循环等待。 #include<stdio.h> #incl…

微信小程序拖拽排序有效果图

效果图 .wxml <view class"container" style"--w:{{w}}px;" wx:if"{{location.length}}"><view class"container-item" wx:for"{{list}}" wx:key"index" data-index"{{index}}"style"--…

hadoop三大组件的结构及各自的作用

1 HDFS 1.1功能 HDFS 是 Hadoop 的分布式文件系统&#xff0c;用于存储和管理海量数据。它具有高容错性、高吞吐量和可扩展性&#xff0c;能够在多个节点上存储和管理大规模数据 1.2架构&#xff1a;采用主从架构&#xff0c;由一个 NameNode 和多个 DataNode 组成。NameNode…

解决jupyter notebook修改路径下没有c.NotebookApp.notebook_dir【建议收藏】

文章目录 一、检查并解决问题二、重新设置默认路径创作不易&#xff0c;感谢未来首富们的支持与关注&#xff01; 最近在用jupyter notebook编写代码时&#xff0c;更新了一下Scikit-learn的版本&#xff0c;然后重新打开jupyter notebook的时候&#xff0c;我傻眼了&#xff0…

MCP Host、MCP Client、MCP Server全流程实战

目录 准备工作 MCP Server 实现 调试工作 MCP Client 实现 MCP Host 配置 第一步:配置支持 function calling的 LLM 第二步:添加MCP Server 一般有两种方式,第一种json配置,第二种直接是Command形式,我这里采用Command形式 第三步:使用MCP Server 准备工作 安装…

4.21—4.22学习总结 JavaWeb:HTML-CSS

Web&#xff1a;能够通过浏览器访问到的网站。 Web标准&#xff1a; HTML&#xff1a; vscode中进行注释的快捷键为ctrl斜线/ h1的字体最大&#xff0c;依次递减&#xff0c;只存在h1—h6。 超链接&#xff1a; 设置字体颜色&#xff1a; 方式三写一个css文件&#xff0c;将方…

Kaamel Agent: 基于EU AI Act的AI影响评估(AIIA)

1. 引言&#xff1a;安全视角下的AI监管 随着人工智能技术的快速发展和广泛应用&#xff0c;AI系统在为社会带来创新和效率的同时&#xff0c;也引发了诸多关于安全、隐私和合规的担忧。在这一背景下&#xff0c;全球范围内涌现出多种监管框架和标准&#xff0c;旨在确保AI系统…

Mongodb分布式文件存储数据库

文章目录 一、MongoDB 简介基本信息特点内部组件 二、MongoDB 部署1. 安装依赖2. 解压部署并配置环境变量3. 修改配置文件以及启动服务4.数据库权限管理 三、MongoDB 管理1. 角色权限2. 操作命令用户管理命令常用命令&#xff08;Mongo4.2.8&#xff09;数据库相关用户相关集合…