TASK2#Datawhale
在Task1提供的baseline中,对于将转换耗煤量为机组报价,简单的采取了线性回归的方式,拟合估计价格到真实市场出清价格。主要对线性回归进行了修改,转而采用了支持向量机(SVM)最终的线性核进行替代。
# 创建支持向量回归模型实例,这里使用线性核
svr_model = SVR(kernel='linear')
# 55392为训练集的长度
train_length = 55392
# 将prices转换为二维数组
prices = np.array(prices).reshape(-1, 1)
# 提取训练集特征数据
X = prices[:train_length]
# 提取训练集目标变量数据
y = electricity_price["clearing price (CNY/MWh)"].iloc[:train_length].values.reshape(-1, 1)
# 训练支持向量回归模型
svr_model.fit(X, y)
其余部分均未修改,获得了分数上的提高。
由原来的12939提高到17351。
在以下这些情况,应用SVM效果更好:
1.非线性问题:如果数据点之间的关系是非线性的,SVM可以通过使用非线性核函数(如径向基函数RBF、多项式核等)来有效地映射到高维空间,找到非线性的决策边界。
2.泛化能力:SVM通过最大化间隔来提高模型的泛化能力,这使得它在面对复杂问题时,相比线性回归,可能有更好的预测性能。
3.过拟合问题:当数据集较小或模型过于复杂时,线性回归可能会过拟合。SVM通过正则化参数控制模型复杂度,有助于避免过拟合。
4.特征选择:SVM在训练过程中自然地进行特征选择,因为只有支持向量会影响最终的决策边界。这在特征数量很多时非常有用。
在本题情况中,由于受到多方面因素的影响,耗煤量与机组报价之间显然是一个非线性问题。