2017-10-12 78 views
0

我正在研究大熊貓的一列郵編,所以我可以在sklearn中構建一個隨機森林模型。這裏是我的代碼:追加兩個大熊貓數據框時的索引問題

forest_test_features = test_df[['sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'grade', 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated']] forest_test_features.append(pd.get_dummies(test_df['zipcode'])) forest_test_target = test_df['price']

我得到一個運行時警告,然後我的模型的R^2的分數比我乾脆離開郵政編碼模型沒有dummifying低得多,這表明出現了錯誤。 pd.get_dummies返回一個數據框,我認爲問題在於這個數據框和forest_test_features有兩個不同的順序,但我不確定如何繼續。索引仍然正確(郵編98144映射到get_dummies返回的'98144'列中的'1')。

我也得到這個警告:RuntimeWarning:'<'不支持'str'和' int',排序順序未定義爲無法匹配的對象 result = result.union(其他)

回答

0

您可以指定順序。我想你有一個forest_train_features數據框。你可以這樣做:

feats = forest_test_features.keys() 
model = RandomForestRegressor() 
model.fit(forest_train_features[feats], forest_train_features['price']) 
prediction = model.predict(forest_test_features[feats]) 

列應該是在同一順序然後。 您也可以在同一個DataFrame中對火車和測試進行相同的預處理,然後對其進行拆分

+0

您可能會將DataFrame.concat()與DataFrame.append()混淆。列順序不是問題。 您的評論確實讓我意識到,我的預處理有點過於複雜。 – ChootsMagoots