如何在 python 中执行线性回归时减少 rmse

how to reduce rmse while performing Linear Regression in python

我不是真正的编码员,但这是我目前所拥有的。我正在尝试应用线性回归来预测样本数据中的某些内容。我可能在这里犯了一些错误,因为我得到的 rmse 大于 1。我检查了连续变量之间的相关性,结果发现它们非常小,最大值为 0.2。还使用四分位数间距方法检查异常值,但有 none.

有人能告诉我应该如何降低 rmse 吗?

import pandas as pd
from sklearn import linear_model
from sklearn.metrics import mean_squared_error
from math import sqrt
from sklearn.cross_validation import train_test_split

df_hosp = pd.read_csv('C:\Users\LAPPY-2\Desktop\LengthOfStay.csv')

df_temp, df_test = train_test_split(df_hosp, test_size=0.30, train_size=0.70)
df_train, df_val = train_test_split(df_temp, test_size=0.30, train_size=0.70)

X = df_train[['rcount', 'male', 'female', 'dialysisrenalendstage', 'asthma', \
              'irondef', 'pneum', 'substancedependence', \
              'psychologicaldisordermajor', 'depress', 'psychother', \
              'fibrosisandother', 'malnutrition', 'hemo', 'hematocrit', \
              'neutrophils', 'sodium', 'glucose', 'bloodureanitro', \
              'creatinine', 'bmi', 'pulse', 'respiration', \
              'secondarydiagnosisnonicd9']]

y = df_train['lengthofstay']

model = linear_model.LinearRegression(fit_intercept=True, normalize=True, copy_X=True)
m = model.fit(X, y)

predictions_train = m.predict(X)
print('Score: %.2f' % m.score(X, y))
rms_train = sqrt(mean_squared_error(y, predictions_train))
print ('Training set RMSE: %.2f' % rms_train)

输出: 得分:0.75 训练集 RMSE:1.19

因为您的 y 变量是停留时间,所以没有理由应该有一个 rmse < 1Here 是解释 RMSE 公式定义的资源。您可以看到,如果 (y_pred - y) 平均大于 1,那么您的 RMSE 将大于 1。

至于为什么会发生这种情况,您似乎试图用大量变量拟合模型,而这些变量的总和实际上与您的输出变量并不相关。您应该只在实际相关的数据上拟合模型,因为相关意味着输入数据以某种方式影响输出数据。

尝试限制适合的输入变量的数量,从相关性最高的数据开始。