机器学习模型——非线性回归
创作时间:
作者:
@小白创作中心
机器学习模型——非线性回归
引用
CSDN
1.
https://blog.csdn.net/qq_60688380/article/details/136968451
在机器学习中,非线性回归问题是一个常见的挑战。本文将介绍如何通过升维技术将非线性问题转换为线性问题,从而提高模型的预测能力。我们将通过多项式回归、深度学习中的噪音分离、矩阵乘法等方法,结合具体的Python代码示例,展示升维技术在处理非线性数据时的应用。
处理的思路:
将非线性问题转换为线性问题
方法:
升维
升维是一种常用的处理非线性问题的方法,它通过将原始数据从低维空间映射到高维空间来增强模型的表达能力。以下是升维的一些具体原理和方法:
多项式回归:这是一种常见的升维方法,通过将已有的特征进行相乘(包括特征与自身相乘),从而生成新的特征维度。例如,在一元多项式回归中,如果因变量y与自变量x的关系是非线性的,可以通过引入x的平方项、立方项等来构建新的特征,使得模型能够捕捉到数据的非线性关系。
分离噪音与有用信息:在深度学习中,升维还可以帮助分离噪音和有用的信息。通过增加维度,网络可以学习到不同特征的权重,从而提高有用信息的权重,降低噪音的权重,这有助于提取数据中的关键特征。
矩阵乘法:在某些情况下,如Embedding层,升维是通过矩阵乘法来实现的。这种方法可以将低维数据映射到高维空间,可能会放大某些特征或者将笼统的特征分开,从而改善模型的性能。
解决欠拟合问题:升维的一个主要目的是解决模型的欠拟合问题,即当模型因为考虑的因素较少而无法准确预测时,通过增加特征的复杂度来提高模型的准确率。
保持一致性:在进行升维操作时,需要确保对训练集、测试集和验证集的数据都进行相同的升维处理,以保持数据的一致性和模型的准确性。
升维里的degree设置的不易过大,否则容易造成维度灾难。
import numpy as np
import pandas as pd
# 数据范围 -3 3
X = 6 * np.random.random(100) - 3
y = 2 * X ** 2 + X + 3 + 5 * np.random.rand(100)
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X.reshape(-1, 1), y)
X_line = np.linspace(-3, 3, 5)
y_line = lr.predict(X_line.reshape(-1, 1))
import matplotlib.pyplot as plt
plt.scatter(X, y)
plt.plot(X_line, y_line, c='r')
plt.show()
我们可以看出,二维数据用一维直线很难去很好的拟合。所以我们进行升维
import numpy as np
import pandas as pd
# 数据范围 -3 3
X = 6 * np.random.random(100) - 3
y = 2 * X ** 2 + X + 3 + 5 * np.random.rand(100)
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X.reshape(-1, 1))
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X_poly, y)
lst = [[1],
[3],
[5]]
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, include_bias=False)
ret = poly.fit_transform(lst)
print(ret)
# 从这个例子中我们可以看出,coef里的结果第一个时x的系数,第二个是x^2的系数
# 绘制折线图
X_line = np.linspace(-3, 3, 100)
print(lr.coef_) # 系数
print(lr.intercept_) # 偏置
y_line = X_line * lr.coef_[0] + X_line ** 2 * lr.coef_[1] + lr.intercept_ #用公式进行输出y_line的值,
import matplotlib.pyplot as plt
plt.scatter(X, y)
plt.plot(X_line, y_line, c='r')
plt.show()
升维后,拟合的线与原数据比较符合
热门推荐
德日战争罪责反思的差异
揭秘艺术创作:如何用线条描绘世界,让你的画作生动起来!
从眼神到微笑,揭秘小婴儿如何表达爱——亲子互动新境界
汽车宽度的测量方法有哪些?测量汽车宽度时如何保证数据精度?
法律是怎么界定轻伤与重伤的
库存系统:仓库层、调度层、销售层的库存数据模型设计
改善头顶毛囊炎,健康饮食作息规律是关键
《战锤40K战争黎明3》兵种图鉴 全种族兵种图鉴及介绍
女性高血压该如何备孕?
视力模糊别轻忽!多发性硬化症经常出现眼部症状,专科医师图文解说
算法乱象整治之下,抖音美团拼多多小红书微博主动出击,百度滴滴未明确举措
企业员工健康管理:八大核心原则构建健康职场生态
研究揭秘极早期银盘的起源和演化
《哪吒2》引发周边产品消费热 国产现象级IP如何长做长红?
全民营养周:大豆制品能否代替肉类补充蛋白质?
临沧十大名菜:从舂干巴到火腿木瓜鸡,感受临沧独特美食文化
LPL八强观赛指南:IG抽到上上签,Doinb面临考验,BLG挑战一穿五
5个文案小技巧,让产品销量翻10倍!
被侵权后如何通过信访渠道维权
眼睛浮肿是什么原因?如何有效缓解眼睛浮肿的情况?
《哪吒之魔童闹海》角色评分出炉,4个角色得到9.9分
PT100温度传感器:精确测量温度的关键元件
超高压设备助力蓝莓桑葚汁品质升级
《起风了》:一首跨越时空的情感叙事
皇室战争 打法策略及玩法深度全览解析
立即唤醒梦游的人,会把人“吓傻”?
脑血管的“暴动”:脑出血的警示与应对之道
生孩子私立医院还是公立医院好?六大维度全面解析
应对社交场合尴尬局面的策略
公司注销后怎么主张债权