为了将线性回归模型拟合给定的训练数据X和标签y,我想通过给定特征的非线性变换来增强我的训练数据X。假设我们有特征x1、x2和x3,我们想使用以下额外的转换特征:
x4 = x12,x5 = x22和x6 = x32 x7 = exp(x1),x8 = exp(x2)和x9 = exp(x3)
x10 = cos(x1),x11 = cos(x2)和x12 = cos(x3)
我尝试了以下方法,但导致模型在均方根误差作为评估标准时表现非常差:
我对机器学习还很陌生,肯定有更好的方法来进行这些非线性特征转换。非常感谢您的帮助。
祝好,Lukas
x4 = x12,x5 = x22和x6 = x32 x7 = exp(x1),x8 = exp(x2)和x9 = exp(x3)
x10 = cos(x1),x11 = cos(x2)和x12 = cos(x3)
我尝试了以下方法,但导致模型在均方根误差作为评估标准时表现非常差:
import pandas as pd
import numpy as np
from sklearn import linear_model
#import the training data and extract the features and labels from it
DATAPATH = 'train.csv'
data = pd.read_csv(DATAPATH)
features = data.drop(['Id', 'y'], axis=1)
labels = data[['y']]
features['x6'] = features['x1']**2
features['x7'] = features['x2']**2
features['x8'] = features['x3']**2
features['x9'] = np.exp(features['x1'])
features['x10'] = np.exp(features['x2'])
features['x11'] = np.exp(features['x3'])
features['x12'] = np.cos(features['x1'])
features['x13'] = np.cos(features['x2'])
features['x14'] = np.cos(features['x3'])
regr = linear_model.LinearRegression()
regr.fit(features, labels)
我对机器学习还很陌生,肯定有更好的方法来进行这些非线性特征转换。非常感谢您的帮助。
祝好,Lukas
np.exp
项比其他所有项都要大得多,因此你的回归只适合它们。在训练分类器之前,你可以通过对数据进行归一化来避免这种情况。查看这篇文章。 - warped