2017-10-28 7 views
0

おはようStackoverflow Community!ランダムフォレスト(Python)のターゲットと独立変数

"House Sales in King County"をランダムフォレストアルゴリズムで分析したいと考えています。これまではデータをロードしてデータを準備していましたが、適切なターゲットと独立変数を選択することは苦労しています。

私の目標は、データセットのすべての変数を入力変数として選択し、ターゲット変数を価格にすることです。

私のコード(以下を参照)は何とか今のところ働いていますが、私の目標に近いものでもありません(さまざまな変数による価格の予測)。私はいくつかのアプローチを試みました - しかし、すべてがエラーで終了しました(ラベルの数= 17はサンプルの数= 15128と一致しません)。

誰かがこれが原因で、非常に低いという推定の数のものであってもよい

# Load Libraries 
from sklearn.ensemble import RandomForestClassifier 
from sklearn.metrics import roc_auc_score 
from sklearn.cross_validation import train_test_split 
import pandas as pd 



dataset= pd.read_csv('kc_house_data.csv') 


dataset = dataset.drop('id', axis=1) 
dataset = dataset.drop('date', axis=1) 
dataset = dataset.drop('zipcode', axis=1) 
dataset = dataset.drop('long', axis=1) 


cols = ['price', 'bathrooms', 'floors', 'bedrooms', 'sqft_living', 'sqft_lot', 'waterfront', 'view', 'condition', 'grade', 'lat', 'sqft_above'] 
dataset[cols] = dataset[cols].applymap(np.int64) 

print(dataset.shape) 
print(dataset.dtypes) 


# Splitting Dataset 
Train,Test = train_test_split(dataset, test_size = 0.3, random_state = 176) 

Train_IndepentVars = Train.values[:, 3:5] 
Train_TargetVar = Train.values[:,5] 
Test_IndepentVars = Test.values[:, 3:5] 
Test_TargetVar = Test.values[:,5] 

##RF 
main=['view', 'bedrooms', 'floors', 'grade'] 
rf_model = RandomForestClassifier(max_depth=30,n_estimators=15) 
rf_model.fit(Train_IndepentVars, Train_TargetVar) 

predictions = rf_model.predict(Train_IndepentVars) 




###Confusion Matrix 

from sklearn.metrics import confusion_matrix 
# Confusion Matrix 
print(" Confusion matrix ", confusion_matrix(Train_TargetVar, predictions)) 


importance = rf_model.feature_importances_ 
importance = pd.DataFrame(importance, index=Train.columns[3:5], 
          columns=["Importance"]) 

print(importance) 

答えて

0

:-)この問題で私を助けることができればそれは素晴らしいことです。より多くの推定値を使用してみてください。 100人以上の人以上。それとは別に、回帰のためにランダムな森林が使用されていても、それは木からの結果を平均化し、バケツのような結果をもたらす特定のレベルを持つため、実際には良いテクニックではありません。この種のデータセットで線形回帰を試みることができます。 トレーニングやテストで3つの機能を使用していることもわかります。むしろ、それらのすべて、または少なくともそれらのほとんどを使用することができます。

ランダムフォレストはまだまだ良いテクニックです。見積もり人数を増やしてみてください。また、既存のデータから新しい機能をいくつか試してみることもできます。家の総面積はすべてのsq.ft.を追加します。列。

train_cols = ['bathrooms', 'floors', 'bedrooms', 'sqft_living', 'sqft_lot', 'waterfront', 'view', 'condition', 'grade', 'lat', 'sqft_above'] 
label = 'price' 
X_train = train.ix[:, train_cols] 
X_test = test.ix[: train_cols] 
y_train = train.ix[:, label] 
y_test = test.ix[:, label] 
+0

ありがとうございました! 「見積もり人数」とはどういう意味ですか?それはまさにポイントです - 私は3つ以上の機能を使用したい - しかし、私はどのようにコードの面では分かりません。 –

+0

私は自分の答えを編集しました。それを見てください。 – pissall

+0

コードありがとうございます!残念ながら、タイプエラー: '['バスルーム '、'フロア '、'ベッドルーム '、' sqft_living '、' sqft_lot '、' waterfront '、' view '、' condition '、' grade ' 'sqft_above'] 'は無効なキーです。 –

関連する問題