3
저는 Python으로 RandomForestRegressor를 사용하고 있으며 기능의 중요성을 평가하는 차트를 만들고 싶습니다. 나는를 복제 할 때이 기능의 중요성 코드가 나는 다음과 같은 오류가 발생 http://www.agcross.com/2015/02/random-forests-in-python-with-scikit-learn/Python을 사용하는 임의의 포리스트 기능 중요성 차트
에서 발견 예에서 변경된
features=df.columns[[3,4,6,8,9,10]]
importances = model.feature_importances_
indices = np.argsort(importances)
plt.figure(1)
plt.title('Feature Importances')
plt.barh(range(len(indices)), importances[indices], color='b', align='center')
plt.yticks(range(len(indices)), features[indices])
plt.xlabel('Relative Importance')
from sklearn.ensemble import RandomForestRegressor
MT= pd.read_csv("MT_reduced.csv")
df = MT.reset_index(drop = False)
columns2 = df.columns.tolist()
# Filter the columns to remove ones we don't want.
columns2 = [c for c in columns2 if c not in["Violent_crime_rate","Change_Property_crime_rate","State","Year"]]
# Store the variable we'll be predicting on.
target = "Property_crime_rate"
# Let’s randomly split our data with 80% as the train set and 20% as the test set:
# Generate the training set. Set random_state to be able to replicate results.
train2 = df.sample(frac=0.8, random_state=1)
#exclude all obs with matching index
test2 = df.loc[~df.index.isin(train2.index)]
print(train2.shape) #need to have same number of features only difference should be obs
print(test2.shape)
# Initialize the model with some parameters.
model = RandomForestRegressor(n_estimators=100, min_samples_leaf=8, random_state=1)
#n_estimators= number of trees in forrest
#min_samples_leaf= min number of samples at each leaf
# Fit the model to the data.
model.fit(train2[columns2], train2[target])
# Make predictions.
predictions_rf = model.predict(test2[columns2])
# Compute the error.
mean_squared_error(predictions_rf, test2[target])#650.4928
기능의 중요성이 내가 사용하는 코드입니다 내 데이터가 포함 된 코드 :
IndexError: index 6 is out of bounds for axis 1 with size 6
또한 하나의 featu 내 레이블에 레이블이없는 곳에 100 % 중요도로 내 차트에 나타납니다.
이 차트를 만들 수 있도록이 문제를 해결하는 데 도움을 주시면 매우 감사하겠습니다.
가 문제를 해결하는 꽃잎 폭 – tktktk0711
은 y 라벨이 잘못, 당신은 최대 점수는 꽃잎의 길이 알고 있지만, 그림을 보여줍니다 것 같다 y-labels 필자는'plt.yticks (range (len (indices)), features [ 'indices'])를' –