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

2023-09-17 18:37:10

目录

1.数据的处理及查看

 2.数据的处理及可视化

3.模型的创建与拟合

4.算法可视化效果图

 5.多维度模型可视化

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

1.数据的处理及查看

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

# 从Excel读取数据
data = pd.read_excel('GeneralizedLinearRegression_data.xlsx')
data.head()

 2.数据的处理及可视化

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

3.模型的创建与拟合

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

4.算法可视化效果图

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

 5.多维度模型可视化

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# 从Excel读取数据
data = pd.read_excel('GeneralizedLinearRegression_data.xlsx')
fig=plt.figure(figsize=(32,6))
fig.suptitle("不同维度的线性回归效果图",fontsize=13)
# 提取特征和标签
X = data[['x']].values
y = data['y'].values
# 利用for循环来进行进一步的
for i in range(8):
# 创建多项式特征
 poly = PolynomialFeatures(degree=i+1)
 X_poly = poly.fit_transform(X)

# 创建线性回归模型并且进行拟合模型
 model = LinearRegression()
 model.fit(X_poly, y)
# 生成一组连续的X值用于绘制回归曲线
 X_test = np.linspace(X.min(), X.max(), 300).reshape(-1, 1)
 X_test_poly = poly.transform(X_test)
# 预测值
 y_test_pred = model.predict(X_test_poly)
# 绘制散点图和拟合曲线
 plt.subplot(2,4,i+1)
 plt.scatter(X, y, marker='.',color='blue', label='Data')
 plt.plot(X_test, y_test_pred, color='red', label='Degree={}'.format(i+1))
 plt.xlabel('x')
 plt.ylabel('y')
 plt.legend()

plt.savefig(r"D:\HuaweiMoveData\Users\27182\Desktop\py\8维度回归图.png",dpi=500)
plt.show()

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

更多推荐

【错误记录】Android Studio 中 Kotlin 版本报错 ( Module was compiled with an incompatible version of Kotlin. T )

文章目录一、报错信息二、问题分析三、解决方案1、低版本Gradle配置2、高版本Gradle配置一、报错信息在AndroidStudio中,编译应用,报如下错误:C:/Users/octop/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-s

设计模式Java实战

文章目录一、前置1.1目的1.2面向对象1.3接口和抽象类二、七大设计原则2.1单一职责2.2接口隔离原则2.3依赖倒转原则2.4里氏替换原则2.5开闭原则2.6不要重复原则2.7迪米特最少知道法则三、23种设计模式3.1创建型:创建对象3.1.1单例模式定义最佳实践场景线程级别的单例缺点3.1.2工厂模式(简单工厂)

DolphinDB x 龙蜥社区,打造多样化的数据底座

近日,浙江智臾科技有限公司(以下简称“DolphinDB”)正式签署CLA贡献者许可协议,加入龙蜥社区(OpenAnolis)。DolphinDB主创团队从2012年开始投入研发产品。作为一款基于高性能时序数据库,DolphinDB支持复杂分析与流处理的实时计算平台,集成了功能强大的编程语言和高吞吐率的流数据分析系统,

Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!

关于AppiumV2AppiumV2beta版本在2021年发布,从2022年1月1号开始,Appium核心团队不会再维护Appium1.x版本了,所有近期官方发布的平台驱动(如Android平台的UIAutomator,IOS平台的XCUITest)不再兼容Appium1.x,需要基于AppiumV2版本。让我们一起

6.2 构建并评价聚类模型

6.2构建并评价聚类模型6.2.1使用sklearn估计器构建聚类模型1、聚类的概念2、常见聚类方法3、使用sklearn估计器构建聚类模型4、sklearn估计器代码:构建K-Means聚类模型6.2.2评价聚类模型1、FMI评价法2、轮廓系数评价法3、Calinski-Harabasz指数评价法6.2.1使用skl

Spring Security 源码详解

SpringSecurity源码详解这里主要介绍SpringSecurity的整体流程,方便以后查阅!!!一、SpringSecurity过滤器链加载1、注册springSecurityFilterChain过滤器当SpringBoot项目启动后,SecurityFilterAutoConfiguration类会加载D

[交互]AJAX

[交互]AJAX创建XMLHttpRequest发送请求服务器响应XMLHttpRequestreadyState状态值响应数据请求状态变更回调函数XMLHttpRequeststatus的值常用状态码设置AJAX是技术,不是工具,区别于axios、fetch、$.ajax等(封装工具)现有交互工具,是用于改变部分网页

最佳优先搜索简介

概念:最佳优先搜索算法(Best-FirstSearch)是一种启发式搜索算法,用于在图中找到从起点到目标节点的最佳路径。使用一个优先队列来存储待扩展的节点,优先队列根据节点的启发式评估函数值进行排序。在每次迭代中,算法选择队列中启发式评估函数值最小的节点进行扩展,直到找到目标节点或遍历完所有节点。最佳优先搜索算法用于

什么是智能推荐?智能推荐的原理是什么?

一、智能推荐的魔力2020年的愚人节晚间,罗永浩在抖音带货,相信你也被刷屏了吧。3小时的直播过程中,22款产品轮番出场,最终首播支付交易总额突破1.1亿、整场直播观看总人数超过4800万、总销售件数逾91万,粉丝打赏音浪收入3600万,由此看来,罗老师看起来离“带货一哥”的目标又进了一步。不得不说,这场魔幻版的流量狂潮

如何学习java

带着问题去学?为什么我们debug的时候代码会停在哪一个位置什么是多态?(这个在类的生命周期里面寻找答案)我们学习java就是从代码到成为程序的过程所以这很明显就是我们的编译原理和os打交道这很明白就是操作系统和另一台机器打交道,那么就是计算机网络java指令8个从代码到程序就是从代码到字节码(javap命令可以看到)

七、运算符

运算符1.运算符1.1.赋值运算符1.2.算数运算符1.3.自增和自减运算符1.4.比较运算符1.5.逻辑运算符1.6.位运算符1.6.1.按位与运算1.6.2.按位或运算1.6.3.按位取反运算1.6.4.按位异或运算1.6.5.移位操作1.6.6.复合赋值运算符1.6.7.三元运算符1.6.8.运算符优先级1.7.

热文推荐