2017-10-28 5 views
0

안녕하세요, Stackoverflow 커뮤니티!임의의 포리스트 (파이썬)에서 대상 및 독립 변수

임의의 포리스트 알고리즘을 사용하여 "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

코드를 보내 주셔서 감사합니다 !!! 불행하게도, 그것은 나를 잡아 : TypeError : '['욕실 ','바닥 ','침실 ','sqft_living ','sqft_lot ','워터 프론트 ','전망 ','조건 ','등급 ' 'sqft_above'] '은 (는) 잘못된 키입니다. –