人工智能学习(一)

这篇博客介绍了如何使用Excel和Python的两种方法进行线性回归分析。首先,通过Excel的数据分析工具对数据集进行回归拟合,展示步骤并得到回归公式。然后,在Python环境中,先不依赖第三方库使用最小二乘法计算回归参数,再引入sklearn库进行线性回归,并绘制了不同数据量的拟合曲线图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本次学习将对于线性回归进行一个初步的了解,并用Excel和jypyter分别进行线性回归的学习

一、使用Excel完成对数据集的线性回归

选择数据项下的数据分析
在这里插入图片描述
在这里插入图片描述


如果没有这个选项,可以在百度中搜索,如何在Excel中添加数据分析


点击数据分析,选择回归。
在这里插入图片描述
Y值下拉身高20个数据,X值下拉体重20个数据,勾选线性拟合图。
在这里插入图片描述
得到下图
在这里插入图片描述

公式的显示操作如下:
右击选择添加趋势线

勾选上显示公式
在这里插入图片描述
之后操作如上,我们选择200个数据
在这里插入图片描述

2000个数据
在这里插入图片描述

二、利用jupyter

1.不使用第三方库

打开jupyter后,点击New,选择Python 3,就成功创建了一个项目
在这里插入图片描述
输入以下代码

# 导入基本库
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

# 导入数据文件,C:\Users\1\Desktop\test1.csv为自己保存Excel的地址
points = np.genfromtxt(r"C:\Users\1\Desktop\test1.csv",delimiter=",",encoding='utf-8')

# 为x,y赋值采样,0为第一个
x=points[1:21,1];
y=points[1:21,2];

# 编写最小二乘法算法,即求y=ax+b中的a和b
x_mean = np.mean(x)
y_mean = np.mean(y)
xsize = x.size
zi = (x * y).sum() - xsize * x_mean *y_mean
mu = (x ** 2).sum() - xsize * x_mean ** 2
# 参数a b
a = zi / mu
b = y_mean - a * x_mean
# 这里对参数保留两位有效数字
a = np.around(a,decimals=2)
b = np.around(b,decimals=2)

#输出线性回归方程
print('Equation of linear regression: y = ',a,'x', b)

#通过Scatter画出拟合曲线图(来自第三方库skleran)
y1 = a*x + b
plt.scatter(x,y)
plt.plot(x,y1,c='r')

运行得到图像
在这里插入图片描述
之后,我们只需要将x=points[1:21,1];y=points[1:21,2];中的21改为201,2001,就可以得到200,2000个数据的图像
200个数据如下
在这里插入图片描述
2000个数据如下
在这里插入图片描述

2.使用第三方库–skleran

输入以下代码

#导入sklearn等各种包以及数据文件
import pandas as pd
import numpy as np
from numpy import array
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import math
df = pd.read_excel(r"C:\Users\1\Desktop\test1.xls")

#输出文件大小
df.shape

#20/200/2000组数据
x=array(df[['Height']].values[:20,:])
y=array(df[['Weight']].values[:20,:])


#导入线性回归函数
model = LinearRegression()
model.fit(x,y)

#斜率
a=model.coef_

#截距
b=model.intercept_

#输出线性回归方程
y_hat=a*x+b
print("Equation of linear regression:y=",a,"x",b)

#绘图
plt.figure()
plt.scatter(x,y) #散点图绘制原始数据x,y
plt.plot(x,y_hat,color='r') #绘制直线
plt.show()

得到20个数据的图像
在这里插入图片描述
要想得到200,2000个数据的图像,只需要改变values[:20,:]中的20即可
200个数据
在这里插入图片描述
2000个数据
在这里插入图片描述

参考博客

https://blog.youkuaiyun.com/qq_44830040/article/details/104857592

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值