私は多くの特徴を考慮して、住宅価格を決定するために線形回帰をPythonで実行しようとしています。これらのうちのいくつかは数値で、一部は非数値です。私は非数値の列のための1つのホットエンコーディングを行い、新しい数値の列を古いデータフレームに添付し、非数値の列をドロップしようとしています。これはトレーニングデータとテストデータの両方で行われます。線形回帰で予測される値が非常に大きい
私は2つの列のフィーチャの交差点を取っていました(私はテストデータにしかないエンコーディングを持っていました)。その後、線形回帰に移行します。コードは以下の通りです:
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))
私がいる問題は、私は、出力、数百万ドルでどこかのようにこれらの不合理に高い販売価格を取得することです。 1つのホットエンコーディングを試す前に、私は数十万ドルの妥当な数を得ました。何が変わったのか分かりません。
また、これを行うより良い方法があれば、私はそれについて聞いて欲しいと思います。
なぜ機能からコメントを削除した行がSalePriceですか?これでXデータにも同じように表示されます –
列車とテストの両方にないので、feature_columnsの一部ではありません。 – David