机器学习之线性回归模板超详注释

# 先引入utf-8编码和模块
encoding="utf-8"
# 每行输出都显示,百年传承,源自小马哥1573
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity="all"
# 画出y=0.5x+3的图像
import numpy as np
import matplotlib.pyplot as plt
# 生成-5到5的20个数的等差数列
x=np.linspace(-5,5,20)
y=0.5*x+3
# 画出图像
plt.plot(x,y,c="orange")
plt.title('Straight Line')
plt.show()
# 导入线性回归模型
from sklearn.linear_model import LinearRegression
# 输入两个点的横坐标
x=[[1],[4]]
# 输入两个点的纵坐标
y=[3,5]
# 利用线性模型拟合两个点,fit为写好的最小二乘法模块
lr=LinearRegression().fit(x,y)
# 设置测试集是0到5的20个数,描绘散点图,画出两个点和直线的图形,size为点的大小
z=np.linspace(0,5,20)
plt.scatter(x,y,s=80)
# 改变向量形状为一列,predict就是将测试集的0到5那20个数分别代入,计算y值,预测
plt.plot(z,lr.predict(z.reshape(-1,1)),c='k')
# 画出函数图像,两个点的线性回归
plt.title('two point linearRegression')
plt.show()
# 打印此直线方程
print('\n\n\n直线方程为:')
print('===================\n')
# {:.3f}意思是显示三位小数,建议不做显示三位小数的处理为了精度.coef是x前面的系数,intercept是截距,即b
print('y={:.3f}'.format(lr.coef_[0]),'x','+{:.3f}'.format(lr.intercept_))
 
 
直线方程为:
===================

y=0.667 x +2.333
 1 # 当我们想构造一个新的算法时,并没有特定的数据集去实验它,因为真实的案例数据它不一定有此算法的特性
 2 # 所以我们人为构造一些数据集,使得其能够很好地满足我们的算法,来实验算法的结果,从而用到我们的实际数据中.
 3 # 这里我们用到的是回归,所以我们构造了一组回归的数据集
 4 # 绘制一条线性模型的预测线,在sklearn中的datasets这个模块中官方存储了一些小批量的数据集,比如鸢尾花的数据
 5 # 电量的数据,癌症的数据,葡萄酒的数据等小批量的数据供练习使用
 6 # make_regression 创造满足回归的一组数据集
 7 from sklearn.datasets import make_regression
 8 # x是特征属性,y是目标值.生成用于回归分析的数据集
 9 # n_samples 样本个数 
10 # n_features特征的个数即x是几个,影响因素是多少个
11 # n_infomative 有效特征的个数,即和y有关系的那些特征的个数,基本上与n_features是相等的
12 # noise 高斯分布的方差
13 # random_state 是我们构造的随机种子数 因为我们构造的随机数是随机构造的,而计算机没办法随机构造,它是个伪随机
14 # 比如它满足一个方程2x+1,随机种子数就是给出这个起始点,第一个数0,第二个数2*0+1=1,第三个数2*1+1=3这样的
15 X,y=make_regression(n_samples=50,n_features=1,n_informative=1,noise=50,random_state=1)
16 # 拟合
17 # 给LinearRegression起个名字叫reg
18 reg=LinearRegression()
19 reg.fit(X,y)
20 # z是我们生成的等差数列,用来画出线性模型的图形
21 z=np.linspace(-3,3,200).reshape(-1,1)
22 plt.scatter(X,y,c='b',s=60)
23 plt.plot(z,reg.predict(z),c='k')
24 plt.title('Linear Regression')
25 plt.show()
26 # 看一下直线的系数和截距
27 print('\n\n\n代码运行结果')
28 print('=====================\n')
29 #打印直线的系数和截距
30 print('直线的系数是;{:.2f}'.format(reg.coef_[0]))
31 print('直线的截距是;{:.2f}'.format(reg.intercept_))
32 print('\n====================')
33 print('\n\n\n')
 
代码运行结果
=====================

直线的系数是;79.52
直线的截距是;10.92

====================

 

posted @ 2019-12-25 13:37  淇则有岸  阅读(413)  评论(0编辑  收藏  举报