小试线性回归
前言
本次学习将对于线性回归进行一个初步的了解,并用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.csdn.net/qq_44830040/article/details/104857592