• 机器学习算法基础--Generalized Linear Regression Model


    目录

    1.数据的处理及查看

     2.数据的处理及可视化

    3.模型的创建与拟合

    4.算法可视化效果图

     5.多维度模型可视化

      线性回归讲了很多次了,广义线性回归无非就是拟合的多项式曲线的次数的变化,就不再推导公式和算法流程了。

    1.数据的处理及查看

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. import pandas as pd
    4. from sklearn.linear_model import LinearRegression
    5. from sklearn.preprocessing import PolynomialFeatures
    6. #解决中文显示问题
    7. plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
    8. plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
    9. # 从Excel读取数据
    10. data = pd.read_excel('GeneralizedLinearRegression_data.xlsx')
    11. data.head()

     2.数据的处理及可视化

    1. # 提取特征和标签
    2. data=np.array(data)
    3. X=data[:,0].reshape(-1,1)
    4. y=data[:,1]
    5. #绘制散点图大致看一下分布
    6. plt.scatter(X,y,s=4)
    7. plt.title("数据特征散点分布图")
    8. plt.savefig(".\数据特征散点分布图.png",dpi=500)
    9. plt.show()

    3.模型的创建与拟合

    1. # 创建多项式特征
    2. #根据图像来大致确定degree的值
    3. poly = PolynomialFeatures(degree=4)
    4. X_poly = poly.fit_transform(X)
    5. # 创建线性回归模型
    6. model = LinearRegression()
    7. # 拟合模型
    8. model.fit(X_poly, y)

    4.算法可视化效果图

    1. # 生成一组连续的X值用于绘制回归曲线
    2. X_test = np.linspace(X.min(), X.max(), 300).reshape(-1, 1)
    3. X_test_poly = poly.transform(X_test)
    4. # 预测值
    5. y_test_pred = model.predict(X_test_poly)
    6. # 绘制散点图和拟合曲线
    7. plt.scatter(X, y, marker='.', label='Data',s=16)
    8. plt.plot(X_test, y_test_pred, color='red',
    9. label='Generalized_inear_Regression')
    10. plt.xlabel('x')
    11. plt.ylabel('y')
    12. plt.title('Generalized_Linear_Regression')
    13. plt.legend()
    14. plt.savefig(".\degree4_example.png",dpi=500)
    15. plt.show()

     5.多维度模型可视化

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. import pandas as pd
    4. from sklearn.linear_model import LinearRegression
    5. from sklearn.preprocessing import PolynomialFeatures
    6. # 支持中文
    7. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    8. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
    9. # 从Excel读取数据
    10. data = pd.read_excel('GeneralizedLinearRegression_data.xlsx')
    11. fig=plt.figure(figsize=(32,6))
    12. fig.suptitle("不同维度的线性回归效果图",fontsize=13)
    13. # 提取特征和标签
    14. X = data[['x']].values
    15. y = data['y'].values
    16. # 利用for循环来进行进一步的
    17. for i in range(8):
    18. # 创建多项式特征
    19. poly = PolynomialFeatures(degree=i+1)
    20. X_poly = poly.fit_transform(X)
    21. # 创建线性回归模型并且进行拟合模型
    22. model = LinearRegression()
    23. model.fit(X_poly, y)
    24. # 生成一组连续的X值用于绘制回归曲线
    25. X_test = np.linspace(X.min(), X.max(), 300).reshape(-1, 1)
    26. X_test_poly = poly.transform(X_test)
    27. # 预测值
    28. y_test_pred = model.predict(X_test_poly)
    29. # 绘制散点图和拟合曲线
    30. plt.subplot(2,4,i+1)
    31. plt.scatter(X, y, marker='.',color='blue', label='Data')
    32. plt.plot(X_test, y_test_pred, color='red', label='Degree={}'.format(i+1))
    33. plt.xlabel('x')
    34. plt.ylabel('y')
    35. plt.legend()
    36. plt.savefig(r"D:\HuaweiMoveData\Users\27182\Desktop\py\8维度回归图.png",dpi=500)
    37. plt.show()

    拟合的效果到最后都差不多了,n=4之后再增加就是徒增计算量了。 

  • 相关阅读:
    【Linux】第十九站:进程替换
    90%的测试人员知识盲区:移动端专项测试到底怎么做?
    二叉树基本操作实现 && 树和二叉树&& 二叉树进阶oj && 堆的基本概念 && 优先级队列的使用_
    【精彩回顾】 用sCrypt在Bitcoin上构建智能合约
    Python3程序捕获Ctrl+C终止信号
    【Python】SimpleITK使用笔记
    ROS Melodic安装
    华为机试真题 C++ 实现【矩阵最大值】
    综合管廊UWB人员定位系统
    Jenkins安装
  • 原文地址:https://blog.csdn.net/m0_71819746/article/details/132948654