Task02:回归问题


在这里插入图片描述

机器学习基础

回归

回归:因变量是连续型变量,如:房价,体重等。
常用数据集:boston(波士顿房价是一个连续型变量)

sklearn中所有内置数据集都封装在datasets对象内: 返回的对象有:
data:特征X的矩阵(ndarray)
target:因变量的向量(ndarray)
feature_names:特征名称(ndarray)

使用:

from sklearn import datasets
boston = datasets.load_boston()     # 返回一个类似于字典的类
X = boston.data
y = boston.target
features = boston.feature_names
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()
sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()

在这里插入图片描述

各个特征的相关解释:
CRIM:各城镇的人均犯罪率
ZN:规划地段超过25,000平方英尺的住宅用地比例
INDUS:城镇非零售商业用地比例
CHAS:是否在查尔斯河边(=1是)
NOX:一氧化氮浓度(/千万分之一)
RM:每个住宅的平均房间数
AGE:1940年以前建造的自住房屋的比例
DIS:到波士顿五个就业中心的加权距离
RAD:放射状公路的可达性指数
TAX:全部价值的房产税率(每1万美元)
PTRATIO:按城镇分配的学生与教师比例
B:1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例
LSTAT:较低地位人口
Price:房价

分类

分类:因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。
常用数据集:iris

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
iris_data.head()
# 可视化特征
marker = ['s','x','o']
for index,c in enumerate(np.unique(y)):
    plt.scatter(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

在这里插入图片描述
不同的颜色和点的样式为一种类型的鸢尾花,一共有三宗,因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。

各个特征的相关解释:
sepal length (cm):花萼长度(厘米)
sepal width (cm):花萼宽度(厘米)
petal length (cm):花瓣长度(厘米)
petal width (cm):花瓣宽度(厘米)

无监督学习

构建月牙型非凸集

使用sklearn构建完整的机器学习项目流程

集成的两大主要任务,集成回归和分类问题

步骤:
明确项目任务:回归/分类(建模中很重要,经常不能确定问题到底问的什么)
收集数据集并选择合适的特征。
选择度量模型性能的指标。
选择具体的模型并进行训练以优化模型。
评估模型的性能并调参。

度量模型性能的指标: :
𝑅2决定系数(线性回归常用)
MSE均方误差(常用)
MAE平均绝对误差
解释方差得分

回归

线性回归模型

线性回归(用直线拟合,自变量和因变量是线性相关)
非线性回归(用曲线拟合,自变量和因变量是复杂的关系。例如:深度学习、神经网络)

目标:曲线到数据点的差距最小
1)最小二乘估计
求导计算L(w)函数的最小值(一般用平方求和,不用绝对值,因为类似|x|在零点没办法求导)
在这里插入图片描述
2)几何概念
在这里插入图片描述
3)概率视角
噪声符合正态分布,Y为正态分布加一个值,所以也符合正态分布
在这里插入图片描述

线性回归模型的推广

多项式回归
在这里插入图片描述在这里插入图片描述

对于多项式的阶数d不能取过大,一般不大于3或者4,因为d越大,多项式曲线就会越光滑,在X的边界处有异常的波动。(图中的边界处的4阶多项式拟合曲线的置信区间(虚线表示置信区间)明显增大,预测效果的稳定性下降。)
广义可加模型(GAM)
推荐书籍:回归分析(谢宇)、女士品茶(统计学入门)
在这里插入图片描述
优点:简单容易操作,能够很自然地推广线性回归模型至非线性模型,使得模型的预测精度有所上升;由于模型本身是可加的,因此GAM还是能像线性回归模型一样把其他因素控制不变的情况下单独对某个变量进行推断,极大地保留了线性回归的易于推断的性质。
缺点:GAM模型会经常忽略一些有意义的交互作用,比如某两个特征共同影响因变量,不过GAM还是能像线性回归一样加入交互项𝑥(𝑖)×𝑥(𝑗)的形式进行建模;但是GAM模型本质上还是一个可加模型,如果我们能摆脱可加性模型形式,可能还会提升模型预测精度。
代码:

#(sklearn没有集成GAM)
from pygam import LinearGAM
gam = LinearGAM().fit(boston_data[boston.feature_names], y)
gam.summary()

决策树模型之回归树

优点:
树模型的解释性强,在解释性方面可能比线性回归还要方便。
树模型更接近人的决策方式。
树模型可以用图来表示,非专业人士也可以轻松解读。
树模型可以直接做定性的特征而不需要像线性回归一样哑元化。
树模型能很好处理缺失值和异常值,对异常值不敏感,但是这个对线性模型来说却是致命的。
树模型的预测准确性一般无法达到其他回归模型的水平(容易过拟合),但是改进的方法很多。

支持向量机回归(SVR)
KKT条件(最优解的一阶必要条件)、对偶理论
不用在每个点都计算误差,存在一些点有噪声,另一个很小区域内的点不计算损失。
极大似然估计
连乘取对数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyTorch中进行回归问题的训练可以通过以下步骤进行: 1. 准备数据:首先,你需要准备你的输入数据和目标数据。输入数据可以是一个特征向量,而目标数据是你想要预测的值。 2. 创建模型:接下来,你需要定义一个神经网络模型。你可以使用PyTorch的nn.Module类来创建一个自定义的神经网络模型。 3. 定义损失函数:在回归问题中,常用的损失函数是均方误差(Mean Squared Error,MSE)。你可以使用PyTorch提供的MSELoss函数。 4. 定义优化器:选择一个合适的优化算法,例如随机梯度下降(Stochastic Gradient Descent,SGD)或Adam优化算法。你可以使用PyTorch提供的优化器类来定义优化器。 5. 训练模型:使用训练数据来训练你的模型。你需要定义一个训练循环,在每个循环中,将输入数据传递给模型,计算损失值,然后使用优化器来更新模型的参数。 6. 评估模型:在训练完成后,你可以使用测试数据来评估模型的性能。可以计算预测值与真实值之间的误差,例如均方根误差(Root Mean Square Error,RMSE)或平均绝对误差(Mean Absolute Error,MAE)。 7. 调整模型:根据评估结果,你可以调整模型的结构或超参数,例如学习率、隐藏层的大小等,并重新训练模型。 参考文献: 训练搭建的神经网络5.可视化操作. url: https://blog.csdn.net/qq_41855420/article/details/110479930<span class="em">1</span> #### 引用[.reference_title] - *1* [Pytorch——回归问题](https://download.csdn.net/download/weixin_38698943/13751758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值