我想在python中運行線性迴歸來確定給定許多功能的房價。其中一些是數字的,另一些是非數字的。我正在嘗試爲非數字列做一個熱門編碼,並將新的數字列附加到舊的數據框並刪除非數字列。這是在訓練數據和測試數據上完成的。非常大的值爲線性迴歸預測
然後我拿到了兩列功能的交集(因爲我有一些編碼只位於測試數據中)。之後,它進入線性迴歸。代碼如下:
non_numeric = list(set(list(train)) - set(list(train._get_numeric_data())))
train = pandas.concat([train, pandas.get_dummies(train[non_numeric])], axis=1)
train.drop(non_numeric, axis=1, inplace=True)
train = train._get_numeric_data()
train.fillna(0, inplace = True)
non_numeric = list(set(list(test)) - set(list(test._get_numeric_data())))
test = pandas.concat([test, pandas.get_dummies(test[non_numeric])], axis=1)
test.drop(non_numeric, axis=1, inplace=True)
test = test._get_numeric_data()
test.fillna(0, inplace = True)
feature_columns = list(set(train) & set(test))
#feature_columns.remove('SalePrice')
X = train[feature_columns]
y = train['SalePrice']
lm = LinearRegression(normalize = False)
lm.fit(X, y)
import numpy
predictions = numpy.absolute(lm.predict(test).round(decimals = 2))
是我遇到的問題是,我得到這些高得離譜的銷售價格作爲輸出,動輒上百萬美元的地方。在我嘗試了一個熱門編碼之前,我得到了數十萬美元的合理數字。我無法弄清楚發生了什麼變化。
此外,如果有更好的方法來做到這一點,我會很渴望聽到它。
爲什麼要刪除SalePrice的特性評論?現在您也可以在X數據中使用它 –
它不屬於feature_columns,因爲它不在列車和測試中。 – David