0
我不是一個真正的編碼員,但這是我迄今爲止所做的。我試圖應用線性迴歸來預測樣本數據中的某些內容。我可能在這裏犯了一些錯誤,因爲我得到了1以上的rmse。我檢查了連續變量之間的相關性,結果很小,最大值達到了0.2。還使用Inter Quartile Range方法檢查異常值,但沒有。如何在python中執行線性迴歸時減少rmse
請有人告訴我應該如何減少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
Thanks @pypypy。就rmse公式部分達成一致,但如果我不將數據分成不同的部分,則顯示爲0.5以下。我刪除了幾個與目標變量最不相關的變量,但輸出仍然是相同的。 – funnyguy
X = df_train [''rcount','hematocrit','neutrophils','bloodureanitro',\ '呼吸','男性','女性','dialysisrenalendstage','哮喘' '肺','物質依賴',\ 'psychdisordermajor','depress','psychother',\ 'fibrosisandother','營養不良','hemo']] – funnyguy
這是真的數據嗎?如果是這樣,可能沒有找到任何關係,沒有理由爲什麼數據必須符合線性迴歸。 – pypypy