人工智能学习(一)

小试线性回归

前言

本次学习将对于线性回归进行一个初步的了解,并用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

上一篇:数据统计描述性分析


下一篇:Numpy学习之——numpy.mean中axis参数用法