Tôi đang sử dụng Trình phân loại rừng ngẫu nhiên scikit-learn và tôi muốn vẽ tầm quan trọng của tính năng như trong ví dụ này .
Tuy nhiên, kết quả của tôi là hoàn toàn khác nhau, theo nghĩa là độ lệch chuẩn của tính năng quan trọng hầu như luôn luôn lớn hơn bản thân tầm quan trọng của tính năng (xem hình ảnh đính kèm).
Có thể có loại hành vi như vậy, hoặc tôi đang làm một số sai lầm khi âm mưu?
Mã của tôi là như sau:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(predictors.values, outcome.values.ravel())
importance = clf.feature_importances_
importance = pd.DataFrame(importance, index=predictors.columns,
columns=["Importance"])
importance["Std"] = np.std([tree.feature_importances_
for tree in clf.estimators_], axis=0)
x = range(importance.shape[0])
y = importance.ix[:, 0]
yerr = importance.ix[:, 1]
plt.bar(x, y, yerr=yerr, align="center")
plt.show()
pandas DataFramevới hình dạng m x nvà m x 1. Nó nên được rõ ràng bây giờ.
tsfreshgiúp tôi xác định các tính năng có liên quan và cắt các tính năng của tôi từ 600+ xuống còn khoảng 400. ! [35 tính năng hàng đầu của tôi ] ( i.stack.imgur.com/0MROZ.png ) Ngay cả khi thuật toán này hoạt động tốt cho tôi. Tôi có một phân loại nhị phân, thành công / thất bại. Tôi hầu như không có thành công sai nhưng tôi bỏ lỡ một phần trăm thành công lớn. Tất cả những dự đoán ở trên có vẻ hợp lý. Nó có thể là trường hợp cần phải có một bộ thử nghiệm và đào tạo lớn hơn. Tôi có ít hơn

predictorstrả về mộtnumpy arraycái mà bạn đang tham chiếu đến mộtpandas Dataframeđối tượng bởi các cột không chính xác vìnumpy arrayskhông có thuộc tínhcolumns.