初识线性回归
人工智能第1次作业
目录
一、用excel中数据分析功能做线性回归练习。分别选取20、200、2000组数据,进行练习。记录回归方程式、相关系数R^2
1.前20组数据
- 打开文件,选取前20组数据。点击插入,创建线形图
- 在生成的线形图点击+,选择趋势线–更多选项
- 选择显示公式和显示R平方值生成线形图
2前200组数据
同样方法
3前2000组数据
二、用jupyter编程(不借助第三方库),用最小二乘法,重做第1题
先上传.xmlx文件
1.前20组数据
代码如下
import pandas as pd
import numpy as np
from numpy import array
import matplotlib.pyplot as plt
import math
p=pd.read_excel('weights_heights(身高-体重数据集).xlsx')
p.shape
x = array(p[['Height']].values[:20,:])
y = array(p[['Weight']].values[:20,:])
plt.scatter(x,y)
plt. axis([62,76,0,180])
#20个
#计算平均值
x_mean=np.mean(x)
y_mean=np.mean(y)
#计算a,b
num=0.0#分子
d=0.0#分母
m=0.0
for x_i,y_i in zip(x,y):
num+=(x_i-x_mean)*(y_i-y_mean)
d+=(x_i-x_mean)**2
m+=(y_i-y_mean)**2
a=num/d
b=y_mean-a*x_mean
y_hate=a*x+b
print("线性回归方程为:y=",a,"x","+",b)
#计算R^2
print("R^2:",((num/math.sqrt(d*m))**2))
plt.scatter(x,y)
plt.plot(x,y_hate,color='g')#绘制直线
plt.show()
运行结果:
2.前200组
代码如下:
import pandas as pd
import numpy as np
from numpy import array
import matplotlib.pyplot as plt
import math
p=pd.read_excel('weights_heights(身高-体重数据集).xlsx')
p.shape
x = array(p[['Height']].values[:200,:])
y = array(p[['Weight']].values[:200,:])
plt.scatter(x,y)
plt. axis([62,76,0,180])
#20个
#计算平均值
x_mean=np.mean(x)
y_mean=np.mean(y)
#计算a,b
num=0.0#分子
d=0.0#分母
m=0.0
for x_i,y_i in zip(x,y):
num+=(x_i-x_mean)*(y_i-y_mean)
d+=(x_i-x_mean)**2
m+=(y_i-y_mean)**2
a=num/d
b=y_mean-a*x_mean
y_hate=a*x+b
print("线性回归方程为:y=",a,"x","+",b)
#计算R^2
print("R^2:",((num/math.sqrt(d*m))**2))
plt.scatter(x,y)
plt.plot(x,y_hate,color='g')#绘制直线
plt.show()
运行结果:
3.前2000组
像之前一样
结果:
三、用jupyter编程,借助skleran,重做第1题。
1.前20组数据
import pandas as pd
import numpy as np
from numpy import array
from sklearn import linear_model
import matplotlib.pyplot as plt
import math
p=pd.read_excel('weights_heights(身高-体重数据集).xlsx')
p.shape
x = array(p[['Height']].values[:20,:])
y = array(p[['Weight']].values[:20,:])
model = linear_model.LinearRegression()
model.fit(x,y)
#斜率
print(model.coef_)
a=model.intercept_
b=model.coef_
y_hate1=b*x+a
print("线性回归方程为:y=",b,"x","+",a)
线性回归方程为:y= [[4.1280375]] x + [-152.23378453]
运行结果:
散点图:
model.score(x,y)
plt.figure()
plt.scatter(x,y)
plt.plot(x,y_hate1,color='c')
plt.show()
2.前200组
代码和之前的一样
线性回归方程为:y= [[3.43166515]] x + [-105.95901105]
运行结果:
3.前2000组
线性回归方程为:y= [[2.95552697]] x + [-73.66078552]
运行结果: