回归模型---一次函数与高次函数
有一组数据,通过这组数据来建立回归方程:
先画一个散点图:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
#设置中文显示
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = Falsepath = 'C:/Users/Lenovo/Desktop/shuzizuoye/example/data.txt'
data = pd.read_csv(path, header=None)
plt.scatter(data[:][0], data[:][1], marker='+')#画出数据散点图
data = np.array(data)
y = data[:, 1]#y取第二列数据
x = data[:, :1]
model = LinearRegression()
model.fit(x,y)
plt.scatter(x,y)
plt.plot(x,model.predict(x),color='red')
plt.xlabel('人口')#x轴随便命名--例如人口
plt.ylabel('工资')#y轴随便命名--例如工资
plt.show()
model.coef_,model.intercept_
这里的1.19就是y=ax+b中的a,-3.89就是b。
但是对于有些数据来说不适合使用一次线性回归,更适合二次或者更高的此时,这里还是使用这组数据举例。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegressionplt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = Falsepath = 'C:/Users/Lenovo/Desktop/shuzizuoye/example/data.txt'
data = pd.read_csv(path, header=None)
plt.scatter(data[:][0], data[:][1], marker='+')#画出数据散点图
data = np.array(data)
y = data[:, 1]#y取第二列数据
x = data[:, :1]# 用于增加一个多次项内容的模块PolynomialFeatures
from sklearn.preprocessing import PolynomialFeatures# 设置最高次项为二次项,为生成二次项数据(x^2)做准备
poly_reg = PolynomialFeatures(degree=2)# 将原有的X转换为一个新的二维数组X_,该二维数组包含新生成的二次项数据(x^2)和原有的一次项数据(x)。
X_ = poly_reg.fit_transform(x)model = LinearRegression()
model.fit(X_,y)plt.scatter(x,y)
plt.plot(x,model.predict(X_),color='r')
plt.show()model.coef_,model.intercept_
这里0代表y=ax^2+bx+c中的c,1.1代表b,0.003代表a。
当degree=1时与一次回归方程一样。
建立完回归方程之后需要对方程进行评估,
R-squared(即统计学中的R2)、Adj.R-squared(即Adjusted R2)、P值。
其中R-squared和Adj.R-squared用来衡量线性拟合的优劣,P值用来衡量特征变量的显著性。
R-squared和Adj.R-squared的取值范围为0~1,它们的值越接近1,则模型的拟合程度越高;P值在本质上是个概率值,其取值范围也为0~1,P值越接近0,则特征变量的显著性越高,即该特征变量真的和目标变量具有相关性。
原文链接:https://blog.csdn.net/qq_42433311/article/details/124097370
import statsmodels.api as sm# add_constant()函数给原来的特征变量X添加常数项,并赋给X2,这样才有y=ax+b中的常数项,即截距b
X2 = sm.add_constant(X_)
# 用OLS()和fit()函数对Y和X2进行线性回归方程搭建
est = sm.OLS(y,X_).fit()
est.summary()
另一种计算r2的方式:
from sklearn.metrics import r2_score
r2 = r2_score(y,model.predict(X_))
print(r2)
回归模型---一次函数与高次函数相关推荐
- R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用ggcoxzph函数可视化进行Schoenfeld残差图检验模型是否满足等比例风险
R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型.使用ggcoxzph函数可视化进行Schoenfeld残差图检验模型是否满足等比例风险 目录
- R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用anova函数进行方差分析通过p值确认指定连续变量和风险值HR之间是否存在非线性关系
R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型.使用anova函数进行方差分析通过p值确认指定连续变量和风险值HR之间是否存在非线性关系 目录
- R语言使用caret包的knnreg函数拟合KNN回归模型:使用predict函数和训练好的模型进行预测推理、使用plot函数可视化线图对比预测值和实际值曲线
R语言使用caret包的knnreg函数拟合KNN回归模型:使用predict函数和训练好的模型进行预测推理.使用plot函数可视化线图对比预测值和实际值曲线 目录
- R语言使用mgcv包的gam函数拟合广义加性模型回归模型:使用predict函数和训练好的模型进行预测推理、使用ggplot2可视化预测值和实际值的曲线进行对比分析
R语言使用mgcv包的gam函数拟合广义加性模型回归模型:使用predict函数和训练好的模型进行预测推理.使用ggplot2可视化预测值和实际值的曲线进行对比分析 目录
- R语言使用xgboost包拟合xgboost回归模型、使用predict函数和训练好的模型进行预测推理、计算回归模型的评估指标MAE、MSE、RMSE
R语言使用xgboost包拟合xgboost回归模型.使用predict函数和训练好的模型进行预测推理.计算回归模型的评估指标MAE.MSE.RMSE 目录
- R语言构建无序多分类逻辑回归模型、mlogit.display函数获取无序多分类逻辑回归模型的汇总统计信息(各分组模型对应的系数及标准差、相对危险降低率RRR值及其置信区间、AIC值等)
R语言使用nnet包的multinom函数构建无序多分类logistic回归模型.使用epiDisplay包的mlogit.display函数获取无序多分类logistic回归模型的汇总统计信息(各分 ...
- 机器学习之逻辑回归模型
文章目录 分类思想 逻辑回归模型公式 公式推导 sigmoid函数 避免过拟合 降低模型复杂度 加入L1/L2正则项 正则化的作用 增加训练数据 使用逻辑回归模型进行多分类的几种方式 One vs O ...
- Python实现逻辑回归模型教程
理解多个预测变量与连续响应变量之间关系通常适用线性回归,但当响应变量为类别变量时需要适用逻辑回归. 逻辑回归是尝试从数据集中把W观测记录分为不同类别的分类算法. 常见的分类回归场景有: 通过信用分和账 ...
- 回归分析(三)二项逻辑斯蒂回归模型
回归分析(三)二项逻辑斯蒂回归 学了一段时间突然又遇到逻辑斯蒂回归,结果发现已经忘完了,所以今天重新梳理一下. (1)逻辑斯蒂分布 先看一下逻辑斯蒂分布函数F(x)F(x)F(x),其概率密度 ...
最新文章
- 一文读懂线性回归、岭回归和Lasso回归
- xcode 4.2 如何调试 EXC_BAD_ACCESS
- 仪表指针样式_Qt自定义Widget之仪表盘
- 《面向对象分析与设计》一3.2 参与者
- DataGrid 导出 EXCEL(简单,实用)
- 如何避免JDBC内存溢出问题
- 【技术评测】ArcBlock:试图一同江湖的网络层,实现难度比较大
- pycharm 文件修改的星号(*)提示||文件是否修改过
- Web XR 混合现实浏览器
- 题解 P1217 【[USACO1.5]回文质数 Prime Palindromes】
- 什么是SIT测试,、UAT测试?
- matlab无法显示图片
- sockscap+Bitvise Tunnelier 做内网渗透
- 木马免杀实践-golang
- 通过H5(浏览器/WebView/其他)唤起本地app
- 如何在linux下解压缩rar和zip格式的文件压缩包
- (转载)基于LBS地图的开发,满足地图上有头像的需求
- 知网下载论文(通过深圳图书馆)
- 状态码的含义,以及HTTP中常见的状态码
- VisualVM使用方法